[JAVA] Senden Sie eine E-Mail, wenn ein Protokoll auf ERROR-Ebene mit SMTP Appender of Logback auftritt

Dinge die zu tun sind

Installieren Sie Fake SMTP

FakeSMTP – FakeSMTP - Dummy SMTP server for developers

Installieren und starten Sie einen Dummy-SMTP-Server für die Entwicklung.

pom.xml

pom.xml


	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.1.RELEASE</version>
	</parent>

	<dependencies>
		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4.7</version>
		</dependency>
	</dependencies>

logback.xml

Bearbeiten Sie `` `logback.xml``` unter Bezugnahme auf Logback-Dokument Kapitel 4 Anhang #SMTPAppender.

src\main\resources\logback.xml


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<include resource="org/springframework/boot/logging/logback/base.xml" />

	<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<smtpHost>localhost</smtpHost>
		<smtpPort>25</smtpPort>
		<to>[email protected]</to>
		<to>[email protected]</to>
		<from>[email protected]</from>
		<subject>TESTING: %logger{20} - %m</subject>
		<layout class="ch.qos.logback.classic.PatternLayout">
			<pattern>%date %-5level %logger{35} - %message%n</pattern>
		</layout>
		<STARTTLS>true</STARTTLS>
		<asynchronousSending>false</asynchronousSending><!--Siehe unten-->
	</appender>

	<root level="DEBUG">
		<appender-ref ref="EMAIL" />
	</root>
</configuration>

asynchronousSending = false </ code> wird später beschrieben.

Beispielcode für die Funktionsprüfung

Erstellen Sie eine geeignete Spring-Boot </ code> -Anwendung.

HogeApplication.java


package kagamihoge.logmailsend;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HogeApplication implements CommandLineRunner {
	public static void main(String[] args) {
		SpringApplication.run(HogeApplication.class, args).close();
	}

	Logger logger = LoggerFactory.getLogger(HogeApplication.class);

	@Override
	public void run(String... args) throws Exception {
		logger.info("debug");
		logger.info("info");
		logger.error("error");
		logger.error("error with exception", new NullPointerException());
	}
}

Ausführungszustand

logback-smtp.jpg

Über asynchronousSending = false

Da der Beispielcode für die Betriebsprüfung unmittelbar nach dem Start von main endet, endet main, bevor logback eine E-Mail sendet. Daher wird keine E-Mail gesendet, es sei denn, der asynchrone Übertragungsmodus ist auf false gesetzt.

Recommended Posts