来自供应商图书馆的垃圾充斥着log4j

时间:2009-08-05 19:26:06

标签: java logging java-ee log4j

如何才能最好地防止这些库充斥我自己的应用程序log4j总线?我不想将所有内容都设置为ERROR,但是按照这个速度,供应商库以大约一个千兆/天的速度充斥日志文件。我不希望它将任何内容记录到此文件...

3 个答案:

答案 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 - 我认为这一切都大致相同,但我只是从臀部拍摄)