Log4j comes with an appender that will send an email when a logging event occurs. The appender class is org.apache.log4j.net.SMTPAppender and the following gives an example of its configuration
<appender name="LogEmail" class="org.apache.log4j.net.SMTPAppender">
<param name="BufferSize" value="512" />
<param name="SMTPHost" value="mail.server.com" />
<param name="From" value="myapp@server.com" />
<param name="To" value="support@server.com" />
<param name="Subject" value="Log from myapp" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%p %t %c - %m%n" />
</layout>
</appender>
written by objects
\\ tags: email, log4j, mail
If you do not want to store your log4j configuration in your classes directory then you need to tell log4j where it can find it.
One possibility is to configure it in your applicationContext.xml as shown here
<bean id="log4jInitialization"
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass"
value="org.springframework.util.Log4jConfigurer" />
<property name="targetMethod" value="initLogging" />
<property name="arguments">
<list>
<value>conf/log4j.xml</value>
</list>
</property>
</bean>
If you are running your web application as an expanded war then another option is to use a listener in your web.xml. This will only work on an unexpanded war.
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/resources/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>1000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
written by objects
\\ tags: log4j
Recent Comments