How to send email notifications with slf4j / log4j

2019-04-14 15:11发布

问题:

I've looked into other questions that are similar and have done some googling to find my answer but my question is still unanswered. I'm still unfamiliar with how some of this works, so bear with me.

Our maven pom.xml is using the slf4j dependency:

and our log4j2.xml file looks like this:

I only added this to the above log4j2.xml file <SMTP name="Mail" ...> </SMTP> and lower down in the file i added <logger name="com.path.class1" ...> <appender ...> </logger>

But for some reason, when I call log.error("error message"), my email isn't sent to me. I know the smtp host works because it is used in a .NET service. The smtp server does not require any credentials to use it. I know that my log.error call is in the correct directory and file path. I've tried setting the port, but that didn't make any difference. How do i go about getting the email notifications to work?

I even tried the mailAppender, but that didn't work either:

回答1:

In your log4j.xml

Try configuring it with Mail Appender

make sure you are able to send email using the SMTP of the server.

<?xml version="1.0" encoding="UTF-8"?>

<appender name="mailAppender" class="org.apache.log4j.net.SMTPAppender">
    <param name="BufferSize" value="50" />
    <param name="SMTPHost" value="smtp.mail.example.com" />
    <param name="SMTPPort" value="587" />
    <param name="SMTPUsername" value="myemail_id@example.com" />
    <param name="SMTPPassword" value="mypassword" />
    <param name="From" value="fromemail_id@example.com" />
    <param name="To" value="to_emailid@example.com" />
    <param name="Subject" value="Testing Log4j mail notification" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="[%d{ISO8601}]%n%n%-5p%n%n%c%n%n%m%n%n" />
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMin" value="error" />
        <param name="LevelMax" value="fatal" />
    </filter>
</appender>

<root>
    <priority value="info" />
    <appender-ref ref="mailAppender" />
</root>



回答2:

You cannot mix log4j2 and log4j-1.x appenders. The Log4J2 SMTP appender should work.

I suspect some error is occurring. Do you have the java mail jars in the classpath? Can you change the start of your log4j2.xml config so that it will print debug messages to the console?

<Configuration status="debug"...


回答3:

So i finally was able to get SMTP notifications to work. This is the log4j2.xml file that made it work: