我正在使用 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
但这不会将任何低于错误的内容记录到标准输出。
最佳答案
使用另一个附加程序解决了它:
# 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>
关于java - Log4j 1.x Sentry 附加器 : suppress warnings from specific sources for one appender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43975383/