当我运行我的应用程序时,log4j.xml 文件中有以下内容。控制台中仅打印错误日志,不打印信息日志。但是如果我注释掉 jdbcAppender 部分并仅使用
我希望打印错误和信息,同时需要将错误日志插入到数据库表错误中。
我该怎么做?
问候
<appender name="jdbcAppender" class="bean.CustomJdbcAppender">
<param name = "jndiDataSource" value="myjdbcDS"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="INSERT INTO errors (log_level, location, message) VALUES ( '%p',
'%C;%L', '%m' )"
/>
</layout>
</appender>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %p (%C;%L) %m%n"
/>
</layout>
</appender>
<category name="bean"><priority value="error"/>
<appender-ref ref="jdbcAppender"/>
</category>
<root>
<priority value="info"/>
<appender-ref ref="STDOUT"/>
</root>
最佳答案
从记录器 bean
中删除 ERROR
优先级,以便其日志记录级别继承自根记录器(设置为 INFO
级别)。然后,来自此记录器的任何级别大于或等于 INFO 的日志记录事件都可以被拦截并转发到 jdbcAppender 和 STDOUT 。
<category name="bean">
<appender-ref ref="jdbcAppender"/>
</category>
要限制 jdbcAppender
只能实际记录 ERROR
级别事件,请在 jdbcAppender
上应用并配置 LevelMatchFilter
和 DenyAllFilter
<appender name="jdbcAppender" class="bean.CustomJdbcAppender">
<param name = "jndiDataSource" value="myjdbcDS"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="INSERT INTO errors (log_level, location, message) VALUES ( '%p','%C;%L', '%m' )" />
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="error" />
<param name="AcceptOnMatch" value="true"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter" />
</appender>
关于java - log4j 不记录信息级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9578476/