log4j slf4j 配置

slf4j只定义接口,具体实现还是要靠log4j来定义,所以即使在代码中用slf的getlogger,还是要指定log4j的配置信息等。

 

1. pom.xml

<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.6.3</version>
		</dependency>
		

 

2. 在classpath(src/main/resource)目录下建一个env.properties或log4j.properties文件

### direct log messages to stdout ###
log4j.rootLogger=${log4j.rootLogger}
log4j.appender.stdout=${log4j.appender.stdout}
log4j.appender.stdout.Target=${log4j.appender.stdout.Target}
log4j.appender.stdout.layout=${log4j.appender.stdout.layout}
log4j.appender.stdout.layout.ConversionPattern=${log4j.appender.stdout.layout.ConversionPattern}

 

3. filter-dev.properties

### direct log messages to stdout ###
log4j.rootLogger=info, stdout
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 [%t] (%F:%L) - %m%n

 

4. web.xml中指定log4j的spring配置及listener

<!-- specify log configure file -->
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>classpath:env.properties</param-value>
	</context-param>

	<!-- log listener -->
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>

 

5. 在代码中使用

扫描二维码关注公众号,回复: 616142 查看本文章
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
...

	private static Logger LOGER = LoggerFactory.getLogger(UserAction.class);
...

LOGER.info("############ hibernate pagination search user");

 

 

 

 

写道

Log4j默认把日志信息分为五个等级

       debug < info < warn < error < fatal

定义属性文件
log4j.rootLogger=info, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
分析一下:
第一行,配置log4j.rootLogger你明白吧。应为它是根,总得配置一下,否则别的Log继承什么啊。其他的Log可以配置也可以不配置。等号后面的第一个参数表示日志级别,可以填五个级别中的一种,后面的参数都是让Log知道输出到哪里,如果你想让日志输出到两个地方就加两个输出参数,比如:
log4j.rootLogger=info, stdout, file
这里的info表示,该Log的日志级别为info,所有级别小于info的日志都不会被记录。比如使用这个配置文件的话,我刚开始举的那个类中
log.debug("Debug info.");
这句话是不起作用的,因为debug的级别小于info。这样就很容易控制什么信息在调试的时候要显示,什么信息在发布的时候要去掉。这些都不用改代码,很方便吧。
但,stdout和file又是什么呢?
接着往下看,就是配置stdout了,这个名字是随便取的,你可以叫它A:
log4j.appender.A=org.apache.log4j.ConsoleAppender
那么上面的rootLogger的参数stdout也要改成A,其他用到的地方当然也要改。这里的关键不是名字,而是appender类型,比如这里的“ConsoleAppender”,看明白了吧,输出到Console。后面两行都是设置日志格式的,一般情况下你就照抄吧。

 

猜你喜欢

转载自vilight.iteye.com/blog/1853647