Java 使用log4j修剪日志输出
如何使用log4j实现以下功能:Java 使用log4j修剪日志输出,java,logging,log4j,Java,Logging,Log4j,如何使用log4j实现以下功能: 仅记录来自特定类别的事件,即com.example.app,但不记录com.example.app.context或com.example.dao 记录级别为WARN或更高级别的所有事件 您需要按顺序设置分类过滤器,将附加器阈值设置为更高的过滤器限制 <appender name="LOG_FILE" class="org.apache.log4j.FileAppender"> <param name="File" valu
- 仅记录来自特定类别的事件,即
,但不记录com.example.app
或com.example.app.context
李>com.example.dao
- 记录级别为
或更高级别的所有事件WARN
<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>
您需要按顺序设置类别过滤器,将附加器阈值设置为更高的过滤器限制
<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
要从其子包中删除日志记录,请将其日志级别设置为error或fatal:
#log4j.logger.com.example.app.context=ERROR
log4j.logger.com.example.app.dao=ERROR
编辑:注释掉了
app.context
行,以便它从其父包继承调试级别。在log4j.properties文件中,您可以在rootLogger上设置应用程序的全局日志级别:
log4j.rootLogger=DEBUG, APPENDER
您可以使用WARN、INFO、ERROR和FATAL代替DEBUG
可以为具有子包的包指定其自己的日志级别,如下所示:
log4j.logger.com.example.app=DEBUG
要从其子包中删除日志记录,请将其日志级别设置为error或fatal:
#log4j.logger.com.example.app.context=ERROR
log4j.logger.com.example.app.dao=ERROR
编辑:注释掉了
app.context
行,以便它从其父包继承调试级别。我认为要获得海报请求的行为,您将com.example.app设置为警告,com.example.app.context设置为关闭。我认为没有办法打开com.example.app和关闭每个com.example.app.*除非明确地重复每个子包。要关闭子包(级别低于父级,还必须将addition设置为false)。感谢您的回答。但是,如果这样做,我将丢失com.example.app.context
文件中的WARN
日志记录,我希望看到该文件。我认为要获得海报请求的行为,您将com.example.app设置为WARN,com.example.app.context设置为OFF。我认为没有办法打开com.example.app和关闭每个com.example.app.*除非明确地重复每个子包。要关闭子包(级别低于父级,还必须将addition设置为false)。感谢您的回答。但是,如果这样做,我将丢失com.example.app.context
文件中的WARN
日志记录,我想查看该文件。谢谢您的回答。但是,如果使用这种方法,我将丢失com.example.app.context
文件中的错误记录,我想查看您是否希望app.context
从app
继承日志级别,只是不要在属性文件中为app.context
添加带有新日志级别的行。你能编辑一下你的问题并详细说明一下你到底想要什么吗?谢谢你的回答。但是,如果使用这种方法,我将丢失com.example.app.context
文件中的错误记录,我想查看您是否希望app.context
从app
继承日志级别,只是不要在属性文件中为app.context
添加带有新日志级别的行。你能编辑一下你的问题,详细说明一下你到底想要什么吗?