【问题标题】:log4j appender and packagelog4j appender 和包
【发布时间】:2018-06-25 00:38:29
【问题描述】:

我正在使用 2 个附加程序:

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。这是一个自定义附加程序。

我的应用程序在这个包上:com.A.B

对于我的日志,我需要:

  • 标准输出中所有应用程序出错
  • 来自 MapRDB 中 com.A 包的警告
  • 标准输出中来自 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

有了这个配置,我的控制台日志很好,但 MapRDB 中没有写入任何内容。

如果没有加法错误,我在 MapRDB 中有双重登录控制台和信息登录。我尝试了很多组合,但没有做我需要的......

我想我还没有理解如何使用 log4j,任何机构都有解决方案?

【问题讨论】:

    标签: logging log4j


    【解决方案1】:

    解决办法:

    # 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 设置为信息级别的附加程序,但只需保持警告及以上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多