我使用了2个appender:
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=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.MapRDB=com.A.B.maprdblogger.Appender
stdout在控制台中写道。 MapRDB中的MapRDB。它是一个自定义的appender。
我的申请是在这个包裹上:com.A.B
对于我的日志,我需要:
所以我写道:
log4j.rootLogger=ERROR, stdout
log4j.logger.com.A=WARN, MapRDB
log4j.logger.com.A.B=INFO, stdout
log4j.additivity.com.A=false
使用此conf,我的控制台日志很好,但MapRDB中没有任何内容。
如果没有可加性false,我在MapRDB中有双重登录控制台和信息日志。我尝试了很多组合,但没有做任何我需要的事情......
我想我还没有理解如何使用log4j,任何机构都有解决方案吗?
答案 0 :(得分:0)
解决方案:
# root logger option
log4j.rootLogger=WARN, stdout
# Direct log messages to 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=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Log sent to MapRDB
log4j.appender.MapRDB=com.ingenico.datalake.maprdblogger.Appender
log4j.appender.MapRDB.Threshold=WARN
log4j.logger.com.ingenico=INFO
log4j.logger.com.ingenico.datalake=INFO, MapRDB
感谢这个答案:https://stackoverflow.com/a/23877814/8357778让我了解log4j的工作原理。我需要在良好的水平上定义MapRDB appender的阈值。它允许我将MapRDB设置为信息级别的追加器,但只是保持警告及以上。