Skip to content

intesar/Log4jGmail

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Receive all server errors/exceptions as email, never miss one, easy to share and discuss with the others

Follow these simple steps to configure Log4j to use GMail.


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/Log4jGmail/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>

        <!-- SMTP will only log 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 -->
            <!-- GMail will not work without this, log4j 1.2.16 is required this why earlier versions required hack-->
            <param name="SMTPProtocol" value="smtps" /> 
            <param name="SMTPHost" value="smtp.gmail.com" />
            <param name="SMTPPort" value="465" />
            <param name="SMTPUsername" value="<email>" /> <!-- example@gmail.com -->
            <param name="SMTPPassword" value="<passowrd>" /> <!-- passowrd -->
            <param name="To" value="mdshannan@gmail.com" />
            <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" />
            <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");
            
            // if you want this to pass change appender to Email instead of ASYNC_EMAIL in root logger
            logger.error("error message, a very long error message!");

        }
    }

About

Setup GMail with Log4j, and never miss any error's, easy share and discuss with others

Resources

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages