Receive all server exceptions as email, never miss one, easy to share and discuss with the others
Follow these simple steps to configure Log4j to use Yahoo mail.
Step 1: Add dependencies
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
<!-- Log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
</dependency>
Step 2: Sample logging file, inline comments are self explanatory
file linke : https://github.com/intesar/Log4jYahoo/blob/master/src/main/resources/log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appends events to console : compliments SMTPAppender -->
<appender name="Console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[${name}] - %d{ISO8601} - %X{login} - %m%n" />
</layout>
</appender>
<!-- will only sends error events -->
<appender name="Email" class="org.apache.log4j.net.SMTPAppender">
<param name="BufferSize" value="1" /> <!-- default is 512, changed for test cases to work -->
<param name="SMTPProtocol" value="smtps" /> <!-- log4j 1.2.16 is required -->
<param name="SMTPHost" value="smtp.mail.yahoo.com" />
<param name="SMTPPort" value="465" />
<param name="SMTPUsername" value="intesar@ymail.com" /> <!-- example@gmail.com -->
<param name="from" value="intesar@ymail.com" /> <!-- required -->
<param name="SMTPPassword" value="" /> <!-- passowrd -->
<param name="To" value="mdshannan@gmail.com" /> <!-- required -->
<param name="Subject" value="Zytoon.me Error Log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[${name}] - %d{ISO8601} - %X{login} - %m%n" />
</layout>
</appender>
<appender name="EMAIL_ASYNC" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="1"/>
<appender-ref ref="Email"/>
</appender>
<root>
<priority value="trace" />
<!-- use Email appender for local test to pass -->
<appender-ref ref="EMAIL_ASYNC" />
<appender-ref ref="Console" />
</root>
</log4j:configuration>
Sample Code
import org.apache.log4j.Logger;
public class App {
private static Logger logger = Logger.getLogger(App.class);
public static void main(String[] args) throws InterruptedException {
logger.trace("trace message");
logger.warn("warn message");
// only error msgs will be emailed
logger.error("error message, a very long error message!");
Thread.sleep(2000);
}
}
Follow these simple steps to configure Log4j to use Yahoo mail.
Step 1: Add dependencies
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
<!-- Log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
</dependency>
Step 2: Sample logging file, inline comments are self explanatory
file linke : https://github.com/intesar/Log4jYahoo/blob/master/src/main/resources/log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appends events to console : compliments SMTPAppender -->
<appender name="Console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[${name}] - %d{ISO8601} - %X{login} - %m%n" />
</layout>
</appender>
<!-- will only sends error events -->
<appender name="Email" class="org.apache.log4j.net.SMTPAppender">
<param name="BufferSize" value="1" /> <!-- default is 512, changed for test cases to work -->
<param name="SMTPProtocol" value="smtps" /> <!-- log4j 1.2.16 is required -->
<param name="SMTPHost" value="smtp.mail.yahoo.com" />
<param name="SMTPPort" value="465" />
<param name="SMTPUsername" value="intesar@ymail.com" /> <!-- example@gmail.com -->
<param name="from" value="intesar@ymail.com" /> <!-- required -->
<param name="SMTPPassword" value="" /> <!-- passowrd -->
<param name="To" value="mdshannan@gmail.com" /> <!-- required -->
<param name="Subject" value="Zytoon.me Error Log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[${name}] - %d{ISO8601} - %X{login} - %m%n" />
</layout>
</appender>
<appender name="EMAIL_ASYNC" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="1"/>
<appender-ref ref="Email"/>
</appender>
<root>
<priority value="trace" />
<!-- use Email appender for local test to pass -->
<appender-ref ref="EMAIL_ASYNC" />
<appender-ref ref="Console" />
</root>
</log4j:configuration>
Sample Code
import org.apache.log4j.Logger;
public class App {
private static Logger logger = Logger.getLogger(App.class);
public static void main(String[] args) throws InterruptedException {
logger.trace("trace message");
logger.warn("warn message");
// only error msgs will be emailed
logger.error("error message, a very long error message!");
Thread.sleep(2000);
}
}
fork it https://github.com/intesar/Log4jYahoo
Comments