Log4j的设计思想非常简单,即logger和appender
logger作用就是在代码里使用这个logger,打印信息
logger后可以跟一个或多个appender,appender用以表明吧日志保存到哪里,比如直接命令行显示 ,日志文件等
log4j的配置文件有properties和xml两种,后文中采用properties的配置方法。
我们命名一个叫METRICS的appender, 用来把日志输出到console
log4j.appender.METRICS=org.apache.log4j.ConsoleAppender
log4j.appender.METRICS.layout=org.apache.log4j.PatternLayout
log4j.appender.METRICS.layout.ConversionPattern=%d %p [%c] - %m%n
我们可以自定一个Logger,并把它的additivity设为false
log4j.logger.warnLogger=WARN,METRICS
log4j.additivity.warnLogger=false
因为所有的logger都继承自rootLogger,additivity为false表明子logger只在自己的appender中输出,为true时会导致rootLogger也跟着输出
自定义logger也可以是个package名,如spring 的配置文件为:
log4j.logger.org.springframework=WARN, org.springframework, METRICS
log4j.appender.org.springframework=org.apache.log4j.FileAppender
log4j.appender.org.springframework.File=d\:spring.log
log4j.appender.org.springframework.Encoding=utf8
log4j.appender.org.springframework.layout=org.apache.log4j.PatternLayout
log4j.appender.org.springframework.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
这样就会管理spring的日志系统,因为spring中的logger是获取名为 org.springframework的logger
最后注意一定要配置rootLogger,其作用就是当在配置文件中找不到相应的logger时(按名称,按包名),默认使用rootLogger,
log4j.rootLogger=WARN,METRICS
在java代码中使用Logger的方法非常简单。
private static Logger logx = Logger.getLogger(CategoryServiceTest.class);
CategoryServiceTest.class 与所在的类保持一致,其实穿进去的是这个class的实际路径名(是一个String),
也可以通过以下方式获取自定义Logger
private static Logger logx = Logger.getLogger(“warnLogger");
之后,根据 配置使用 logx.error(""),logx.warn(""), logx.info("")打印信息即可
NOTICE:上午的时候logger打印信息时,layout格式化输出死活不出来,而且不能按字符串getLogger,最后才发现导入Logger时引错包了。
好二的人生!