如何使用log4j实现以下功能:
com.example.app
但不包括com.example.app.context
或com.example.dao
; WARN
或更高级别的所有事件。答案 0 :(得分:2)
您需要按顺序设置类别过滤器,并将appender阈值设置为更高的过滤器限制。
<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>
答案 1 :(得分:2)
在log4j.properties文件中,您可以在rootLogger上设置应用程序的全局日志级别:
log4j.rootLogger=DEBUG, APPENDER
您可以使用WARN,INFO,ERROR和FATAL代替DEBUG。
包含子包的包可以给出自己的日志级别,如下所示:
log4j.logger.com.example.app=DEBUG
从其子包中删除日志记录,将其loglevel设置为error或fatal:
#log4j.logger.com.example.app.context=ERROR
log4j.logger.com.example.app.dao=ERROR
编辑注释掉app.context
行,以便从其父包继承DEBUG级别。