Logging 如何为除“我的包”之外的所有内容设置错误阈值
我已经通过org.apache.log4j.PropertyConfigurator配置了日志记录Logging 如何为除“我的包”之外的所有内容设置错误阈值,logging,log4j,apache-commons-logging,Logging,Log4j,Apache Commons Logging,我已经通过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 我使用一些第三方代码,通过直接调用来使用日志
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阈值,因为我包中的日志也无法通过它。
我需要第三方代码和错误的信息日志级别。您必须定义两个附件,一个用于您的资料,另一个用于第三方资料。然后配置2个记录器,该记录器将引用具有正确阈值的适当追加器 诸如此类:
<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>
有效的解决方案(尽管我觉得不是很好)与Cygnusx1提出的类似:定义两个具有不同阈值的控制台附加器,并相应地分配它们:
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
实际上,问题在于控制台(你不能有两个),我从来没有看到过一个限制不允许你用org.apache.log4j.ConsoleAppender类定义2 appender。。。!但我不明白为什么要定义两个登录到同一个源的appender!在我看来,Appender可以将不同的内容记录在不同的文件中,以保持日志的整洁和有序。只是我的2c;-)sry,但您只是不理解问题:您必须从第三方库中删除调试消息,并保留您的消息。