【问题标题】:Log4j 1.x Sentry appender: suppress warnings from specific sources for one appenderLog4j 1.x Sentry appender:抑制来自一个 appender 的特定来源的警告
【发布时间】:2017-05-15 09:06:04
【问题描述】:

我正在为 Sentry 使用 Log4j 1.x 附加程序来跟踪错误日志记录。

我想忽略来自某些来源的警告,例如来自记录器dre.mytest。我可以使用 log4j.properties 文件执行此操作吗?目前它看起来像这样。

# Root logger option
log4j.rootLogger=INFO, stdout, Sentry

# Configure the Sentry appender, overriding the logging threshold to the WARN level
log4j.appender.Sentry=com.getsentry.raven.log4j.SentryAppender
log4j.appender.Sentry.threshold=WARN
log4j.appender.Sentry.tags=system:annotator

我试过了

log4j.logger.dre.mytest=INFO, stdout
log4j.logger.dre.mytest=ERROR, Sentry

但这不会将任何低于错误的内容记录到标准输出。

【问题讨论】:

    标签: java logging log4j log4j2 sentry


    【解决方案1】:

    使用另一个附加程序解决了它:

    # Root logger option
    log4j.rootLogger=INFO, stdout, SentryWarn
    
    # 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
    
    # Configure Sentry appenders, each with their own threshold
    log4j.appender.SentryInfo=com.getsentry.raven.log4j.SentryAppender
    log4j.appender.SentryInfo.threshold=INFO
    log4j.appender.SentryInfo.tags=system:app
    
    log4j.appender.SentryWarn=com.getsentry.raven.log4j.SentryAppender
    log4j.appender.SentryWarn.threshold=WARN
    log4j.appender.SentryWarn.tags=system:app
    
    log4j.appender.SentryError=com.getsentry.raven.log4j.SentryAppender
    log4j.appender.SentryError.threshold=ERROR
    log4j.appender.SentryError.tags=system:app
    
    # To suppress warnings from loggers to Sentry, use the following
    # log4j.logger.<your-logger-here>=INFO, stdout, SentryError
    # log4j.additivity.<your-logger-here> = false
    
    # To send info and higher to Sentry, use the following
    # log4j.logger.dre.mytest=INFO, stdout, SentryInfo
    # log4j.additivity.dre.mytest = false
    

    升级到 Log4j 2 后它看起来像这样:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN"
                   packages="org.apache.logging.log4j.core,com.getsentry.raven.log4j2">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
            </Console>
            <Raven name="Sentry">
                <tags>system:app</tags>
            </Raven>
        </Appenders>
        <Loggers>
            <Root level="info">
                <AppenderRef ref="Console"/>
                <AppenderRef ref="Sentry" level="warn"/>
            </Root>
            <Logger name="dre.test"
                    level="INFO"
                    additivity="false">
                <AppenderRef ref="Console"/>
                <AppenderRef ref="Sentry" level="error"/>
            </Logger>
        </Loggers>
    </Configuration>
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 2014-05-20
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多