当我运行我的应用程序时,我在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>
答案 0 :(得分:1)
从记录器ERROR
中删除bean
优先级,使其日志记录级别从根记录器继承,该记录器设置为INFO
级别。然后,来自此记录器的任何记录事件的级别大于或等于INFO
都可以被拦截并转发到jdbcAppender
和STDOUT
。
<category name="bean">
<appender-ref ref="jdbcAppender"/>
</category>
要ERROR
实际只能记录jdbcAppender
级事件,请在LevelMatchFilter
上应用和配置DenyAllFilter
和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>
<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>