Java程序最常用的日志系统大概就是apache的log4j了,它的功能简单说就是“记录日志”。对于类库型的Java应用,例如GAPI,本身没有main程序,总是被其他程序调用,这类系统如果自身使用log4j记录日志,会出现自身的日志系统与调用程序的日志系统冲突的问题,解决的方法就是把GAPI的日志用一个“门面”实现,运行时由调用程序实现日志的输出,slf4j就是这样的一个解决方案。
在Eclipse中新建一个Project名为Ex1,创建包com.leechau,创建类MySLF4J,代码如下:
package com.leechau; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MySLF4J { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info("Hello World"); } } } 提示无法解析包名slf4j,【Project->Properties->Java Build Path->Libraries】中,【Add External JARs】,加上log4j-1.2.14.jar、slf4j-api-1.5.0.jar、slf4j-log4j12-1.5.0.jar三个文件即可。 运行文件,出现报错:WARN No appenders could be found for logger... 这是因为slf4j需要读取一个叫log4j.properties的文件,以确定logger的行为,例如Log文件放在什么位置,文件名是什么等等,如果没有这个文件就会出现上面的问题,在使用logger的类文件所在的source folder下新建一个名为“log4j.properties”的文件,文件内容为: log4j.rootCategory=DEBUG,stdout,R,errorlogger
第1个 appender将log写到屏幕
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[%p] [%d] [%c] - [%m]%n log4j.appender.stdout.Threshold=DEBUG log4j.logger.org.apache.mina.filter.executor.OrderedThreadPoolExecutor=WARN log4j.logger.org.apache.mina.core.filterchain.IoFilterEvent=WARN log4j.logger.org.apache.mina.filter.codec.ProtocolCodecFilter=WARN
第1个配置文件,用于输出运行时调试信息
log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.layout=org.apache.log4j.PatternLayout
true表示每次在文件尾写入新的日志信息,false表示新的日志覆盖旧的日志文件
log4j.appender.R.Append=true log4j.appender.R.layout.ConversionPattern=[%p] [%d] [%c] - [%m]%n log4j.appender.R.Threshold=INFO log4j.appender.R.File=./log/Test.log #此参数设置log文件名 log4j.appender.R.MaxFileSize=8000KB log4j.appender.R.MaxBackupIndex=5
第2个配置文件,用于输出运行时错误信息
log4j.appender.errorlogger=org.apache.log4j.RollingFileAppender log4j.appender.errorlogger.layout=org.apache.log4j.PatternLayout log4j.appender.errorlogger.layout.ConversionPattern=[%p] [%d] [%c] - [%m]%n log4j.appender.errorlogger.Threshold=ERROR log4j.appender.errorlogger.File=./log/error.log log4j.appender.errorlogger.MaxFileSize=8000KB log4j.appender.errorlogger.MaxBackupIndex=5 更新一下项目,运行即可。每一个source folder可以拥有自己的“log4j.properties”文件,在此文件中指定不同的log文件名,即可为每一个source folder建立自己的日志文件。
关于log4j的使用方法以及log4j.properties文件设置方法的详细说明见笔记“log4j使用笔记”。