I have the following in log4j.xml file, when I run my application. Only error logs are getting printed in console, info logs are not getting printed. But if I comment out jdbcAppender part and only use
I would like to have both error and info to printed and at the same time error logs needs to be inserted into database table errors.
How can I do this?
Regards
<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>
Remove
ERRORpriority from the loggerbeansuch that its logging level is inherited from the root logger , which is set to theINFOlevel . Then any logging events coming from this logger which level is larger or equal toINFOcan be intercepted and forward to thejdbcAppenderandSTDOUT.To restrict only the
ERRORlevel events can be actually logged byjdbcAppender, apply and configure theLevelMatchFilterandDenyAllFilteron thejdbcAppender