log4j在spring4中的配置

本文介绍如何配置Log4j日志系统,包括使用properties文件配置日志级别、输出方式等,并展示了两种配置方法:传统web.xml配置和纯Java配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先必须有日志配置文件


log4j.rootLogger = INFO,stdout,D,E

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ${spring4.root}WEB-INF/logs/INFO.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = INFO
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

当然你愿意也可以用xml形式的


然后在把log4j配置到spring容器中

先说传统的web.xml形式的

<context-param>  
    <param-name>log4jConfigLocation</param-name>  
    <param-value>WEB-INF/conf/log4j.properties</param-value>  
</context-param>
<context-param>
	<param-name>webAppRootKey</param-name>
	<param-value>cweb.root</param-value>
</context-param>
<context-param>  
    <param-name>log4jRefreshInterval</param-name>  
      <param-value>3000</param-value>  
 </context-param>  
  
<listener>  
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
 </listener>  

log4jConfigLocation 是指明log4j配置文件位置  
webAppRootKey 指定一个项目路径的系统变量,相同容器中,不同项目不能一样,这样在log4j.properties指定日志文件路径可以指定到项目路径下,不再局限于绝对路径
log4jRefreshInterval 是log4j配置文件自动刷新时间
还有一个log4j的日志监听器


还有一种形式就是我最喜欢的纯java配置,

在程序初始化类中重载OnStartup

public class Spring4WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
	@Override
	public void onStartup(ServletContext servletContext) throws ServletException {
		// TODO Auto-generated method stub
		servletContext.addListener(Log4jConfigListener.class);
		servletContext.addListener(WebSessionListener.class);
		servletContext.setInitParameter("webAppRootKey", "spring4.root");
		servletContext.setInitParameter("log4jConfigLocation", "classpath:log4j.properties");
		servletContext.setInitParameter("log4jRefreshInterval", "10000");
		super.onStartup(servletContext);
	}


这里我要着重强调一下,使用webAppRootKey指定应用路径必须指定log4j.properties的位置,就算是默认位置也必须指定即配置log4jConfigLocation,否则系统变量无法应用到log4j中去;

还有Spring通过WebAppRootListener 这个监听器来运行时的项目路径,但是如果在web.xml中已经配置了Log4jConfigListener这个监听器,则不需要配置WebAppRootListener了。因为Log4jConfigListener已经包含了WebAppRootListener的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值