SLF4J - 一个通用的日志门面库,为各种Logging API提供了一套通用的日志接口,更多信息请参考官方网站。
SLF4J会根据classpath中所存在的适配器的jar来决定将使用的日志实现库。
1、在ssh部署在tomcat中使用有点区别,log4j要在web.xml中配置才能使用并输出你想要的日志文件:
配置如下:
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</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>
使用时:private Logger logger = Logger.getLogger(getClass());
spring在初始化化容器时会把log4j的配置进行初始化,在程序中我们就可以根据配置来使用了。
2、如果你是使用slf4j的话,底层还是使用log4j,要在类路径中加入slf4j-api.jar和对应的slf4j-log4j12.jar就可以在程序中使用了,不需要额外在web.xml中进行配置。
使用时: private org.slf4j.Logger logger = LoggerFactory.getLogger(getClass());
3、本例使用的简单的log4j.properties属性文件如下配置:
# Output pattern : date [thread] priority category - message log4j.rootLogger=info, Console, RollingFile #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Encoding=GBK log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n #RollingFile log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender log4j.appender.RollingFile.Encoding=UTF-8 log4j.appender.RollingFile.File=E:/JavaImproveLevel/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/logs/teedry.log log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout log4j.appender.RollingFile.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n #hibernate sql log4j.logger.org.hibernate.SQL=info #change the ? to the real param #log4j.logger.org.hibernate.type=trace log4j.logger.org.hibernate.type=info
4、因为在日志的输出编码格式在window和linux或unix中,缺省状态下是根据系统的编码来输出的,为了避免linux系统没有设置编码而引起的输出日志乱码情况,最好在log4j属性文件中指定编码,经过本人测试,在window下设置控制台的编码时有中文时只有设为“GBK”,设为"UTF-8"会出现乱码情况,输出文件则可以指定“UTF-8”或"GBK"等。