我如何能实现以下使用log4j的剪裁下来的日志输出:使用log4j的
- 日志仅事件从一个特定类别的到来,即
com.example.app
但不com.example.app.context
或com.example.dao
; - 记录级别为
WARN
或更高的所有事件。
我如何能实现以下使用log4j的剪裁下来的日志输出:使用log4j的
com.example.app
但不com.example.app.context
或com.example.dao
;WARN
或更高的所有事件。您需要设置catergory过滤器,将appender阈值设置为higer过滤器限制。
<appender name="LOG_FILE" class="org.apache.log4j.FileAppender">
<param name="File" value="log_file.log" />
<param name="Threshold" value="WARN"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<category name="com.example.app">
<priority value="DEBUG" />
<appender-ref ref="LOG_FILE" />
</category>
<category name="com.example.app.context">
<priority value="WARN" />
<appender-ref ref="LOG_FILE" />
</category>
在你的log4j.properties文件,你可以设置全局日志级别有关rootLogger您的应用程序:
log4j.rootLogger=DEBUG, APPENDER
您可以使用WARN,INFO,ERROR和FATAL,而不是DEBUG。
与子包一个包可以给自己的日志级别,像这样:
log4j.logger.com.example.app=DEBUG
从其子包删除记录,设置其日志级别的错误或致命的:
#log4j.logger.com.example.app.context=ERROR
log4j.logger.com.example.app.dao=ERROR
编辑:注释掉app.context
行,以便它从其父包中继承DEBUG级别。
感谢您的回答。然而,我这样就会失去'com.example.app.context'文件中的<'ERROR'日志记录,我想查看 – 2009-11-11 11:36:16
如果您希望'app.context'继承'app'的日志级别,只是不要在属性文件中为'app.context'放置一个新的日志级别。你能编辑你的问题,并详细阐述一下你想要的东西吗? – rsp 2009-11-11 14:47:46
我认为要获取所要求的海报行为,您需要将com.example.app设置为WARN并将com.example.app.context设置为OFF。我不认为有一种方法可以在每个com.example.app。* off上关闭com.example.app,除非明确重复每个子包。 – 2009-11-10 21:21:12
要关闭子包(到比父级更低的级别,还必须将添加剂设置为false)。 – Yishai 2009-11-10 21:24:03
感谢您的回答。但是,我这样就会失去'com.example.app.context'文件中的WARN'日志记录,我想查看它。 – 2009-11-11 11:35:45