如何才能最好地防止这些库充斥我自己的应用程序log4j总线?我不想将所有内容都设置为ERROR,但是按照这个速度,供应商库以大约一个千兆/天的速度充斥日志文件。我不希望它将任何内容记录到此文件...
答案 0 :(得分:7)
供应商是否合理使用类别?如果是这样,请将仅将其根类别设置为ERROR,并将其他所有内容保留为正常情况。这样你就可以过滤掉他们的非错误信息,但仍然可以看到你自己的信息/调试/等。
这是大多数类别:)
答案 1 :(得分:4)
正如Jon Skeet´s answer所建议的那样,您应该配置log4j以忽略供应商库中的类。通常有一个名为log4j.xml
的文件,可以将包名称和阈值类别打印出来,如下所示:
<category name="httpclient.wire">
<priority value="INFO"/>
</category>
<category name="org.apache.commons.httpclient">
<priority value="WARN"/>
</category>
<category name="org.hibernate">
<priority value="DEBUG"/>
</category>
<category name="net.sf.jasperreports">
<priority value="ERROR"/>
</category>
请查看the manual了解详情。
答案 2 :(得分:0)
呃,如果所有其他方法都失败了,你可以扩展LogImpl并让它为你的所有日志记录调用注入一个属性,并在你的所有appender上设置一个PropertyFilter。但希望它不会那样。
(请注意,这来自log4net - 我认为这一切都大致相同,但我只是从臀部拍摄)