[JAVA] Envoyer un e-mail lorsque le journal de niveau d'ERREUR se produit avec SMTP Appender de logback

Choses à faire

Installez un faux SMTP

FakeSMTP – FakeSMTP - Dummy SMTP server for developers

Installez et démarrez un serveur SMTP factice pour le développement.

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

Modifiez `` logback.xml '' en vous référant au document de connexion Chapitre 4 Appender #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><!--Voir ci-dessous-->
	</appender>

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

asynchronousSending = false </ code> sera décrit plus tard.

Exemple de code pour le contrôle de fonctionnement

Créez une application spring-boot </ code> appropriée.

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());
	}
}

État d'exécution

logback-smtp.jpg

À propos de asynchronousSending = false

Étant donné que l'exemple de code pour vérifier l'opération se termine immédiatement après le démarrage de main, main se termine avant que logback envoie un e-mail. Par conséquent, le courrier n'est pas envoyé sauf si le mode de transmission asynchrone est défini sur false.

Recommended Posts