我已经通过org.apache.log4j.PropertyConfigurator配置了日志记录
log4j.rootLogger=ERROR, console
log4j.logger.com.mypackage=INFO
log4j.appender.console=org.apache.log4j.ConsoleAppender
// pattern, layout
log4j.appender.console.Threshold=INFO
我使用了一些通过直接调用
来使用日志记录的第三方代码org.apache.log4j.Logger.getLogger(name).callAppenders(...)
此调用会跳过任何级别检查,并仅依赖于appender阈值。 我无法增加appender阈值,因为我的包中的日志也不会通过它。 我想要我的代码的INFO日志级别和第3方的错误。
答案 0 :(得分:1)
你必须定义2个appender,1个用于你的东西,另一个用于第三方的东西。然后配置将要引用的2个记录器。适当的appender具有正确的阈值。
类似的东西:
<appender name="mystuff" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="../logs/mystuff.log" />
<param name="datePattern" value="yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd-MM-yyyy kk:mm:ss.SSS} %-5p %c %x - %m%n" />
</layout>
</appender>
<appender name="thridPartystuff" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="../logs/thirdParty.log" />
<param name="datePattern" value="yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd-MM-yyyy kk:mm:ss.SSS} %-5p %c %x - %m%n" />
</layout>
</appender>
<logger name="com.mystuf" additivity="true">
<level value="info" />
<appender-ref ref="mystuff" />
</logger>
<logger name="com.third.party.package">
<level value="error" />
<appender-ref ref="thridPartystuff" />
</logger>
答案 1 :(得分:1)
有效的解决方案(虽然我觉得它不太好)与Cygnusx1提出的解决方案类似:定义两个具有不同阈值的控制台appender并相应地分配它们:
log4j.rootLogger=ERROR, console // receive error message on console from all packages
log4j.logger.com.problematic= , console2 // define another appender for the problematic package
log4j.additivity.com.problematic = false // don't propagate messages to root to avoid duplicates
log4j.appender.console2 = org.apache.log4j.ConsoleAppender
log4j.appender.console2.Threshold = ERROR