Architecture articles réels (xiii): Spring Boot notification mail Logback

Journaux pour des applications est très important quand on vous donne un programme, et vous ne savez pas est une chose terrible, nous utilisons le programme compte tenu de la logback d'information mail au développeur

Structure de répertoire

Structure de répertoire

En fonction du projet de configuration

pom.xml

< ? Xml version = "1.0" encoding = "UTF-8"? > < projet xmlns = " xmlns: xsi = " xsi: schemaLocation = " > < modelVersion > 4.0.0 < / modelVersion > < groupId > com.itunion < / GroupId > < artifactId > printemps-boot-log-mail < / ArtifactId > < version > 0.0.1-SNAPSHOT < / version > < conditionnement > pot < / emballage > < nom > printemps-boot-log-mail < / Nom > < description > Démo projet pour le printemps Boot < / description > < mère > < groupId > org.springframework.boot < / GroupId > < artifactId > printemps-boot-démarreur-parent < / ArtifactId > < version > 2.0.3.RELEASE < / version > < relativePath / >   < ! - parent recherche du référentiel - > < / Parent > < propriétés > < project.build.sourceEncoding > UTF-8 < /project.build.sourceEncoding > < project.reporting.outputEncoding > UTF-8 < /project.reporting.outputEncoding > < java.version > 1.8 < /java.version > < / Propriétés > < dépendances > < dépendance > < groupId > org.springframework.boot < / GroupId > < artifactId > printemps-boot-démarreur Web < / ArtifactId > < / dépendance > < dépendance > < groupId > org.springframework.boot < / GroupId > < artifactId > printemps-boot-devtools < / ArtifactId > < portée > exécution < / Champ d'application > < / dépendance > < dépendance > < groupId > org.springframework.boot < / GroupId > < artifactId > printemps-boot-démarreur test < / ArtifactId > < portée > test < / Champ d'application > < / dépendance > < ! - Courrier - > < dépendance > < groupId > org.springframework.boot < / GroupId > < artifactId > printemps-boot-démarreur-mail < / ArtifactId > < / dépendance > < / dépendances > < construction > < plugins > < plug-in > < groupId > org.springframework.boot < / GroupId > < artifactId > printemps-boot-maven-plugin < / ArtifactId > < / Plugin > < / Plugins > < / Construire > < / projet >

Ici, l'utilisation principale des messages de démarrage du ressort dépendant de ressort démarrage démarreur-mail, vraiment bon pratique

Configuration du journal Courrier

vente par correspondance appender.xml

< ? Xml version = "1.0" encoding = "UTF-8"? > < inclus > < ! - Paramètres de messagerie - > < property name = "smtpHost" value = "smtp.163.com" / > < property name = "SMTPPort" value = "25" / > < property name = "mailFrom" value = "xxx@163.com" / > < property name = "nom d'utilisateur" value = "xxx@163.com" / > < property name = "mailto" value = "xxx@163.com" / > < property name = "password" value = "xxx" / > < nom de la propriété = valeur "SSL" = "false" / > < property name = "mailSubject" value = "anomalies" / > < Nom appender = classe "MAIL" = "ch.qos.logback.classic.net.SMTPAppender" > < smtpHost > $ {} SmtpHost < / smtpHost > < SMTPPort > $ {} SMTPPort < / SMTPPort > < nom d'utilisateur > $ {} Nom d'utilisateur < / Nom d'utilisateur > < mot de passe > $ {} Mot de passe < / Mot de passe > < SSL > $ {SSL} < / SSL > < asynchronousSending > faux < / AsynchronousSending > < à > $ {} Mailto < / A > < de > $ {} MailFrom < / De > < sujet > $ {} MailSubject < / Sujet > < classe layout = "ch.qos.logback.classic.html.HTMLLayout" / > < classe filter = "ch.qos.logback.classic.filter.ThresholdFilter" > < niveau > eRREUR < / Niveau > < / Filtrer > < / Appender > < / Inclus > < property name = "mailFrom" value = "xxx@163.com" / > < property name = "nom d'utilisateur" value = "xxx@163.com" / > < property name = "mailto" value = "xxx@163.com" / > < property name = "password" value = "xxx" / >

Il devrait être votre propre configuration de boîte aux lettres et compléter votre autorisation de mot de passe

Rappelez-vous d'ouvrir les paramètres de smtp de boîte aux lettres

Rappelez-vous d'ouvrir les paramètres de smtp de boîte aux lettres

Rappelez-vous d'ouvrir les paramètres de smtp de boîte aux lettres

Configuration logback

logback.xml

< ? Xml version = "1.0" encoding = "UTF-8"? > < configuration > < ! - paramètres par défaut de certains des - > < inclure resource = "org / springframework / boot / enregistrement / logback / defaults.xml" / > < ! - les arguments du fichier journal - > < property name = "LOG_FILE" value = "$ {LOG_FILE: - $ {LOG_PATH: - $ {LOG_TEMP: - $ {java.io.tmpdir: - / tmp}}} / spring.log}" / > < ! - configuration du contrôleur - > < inclure resource = "org / springframework / boot / enregistrement / logback / console appender.xml" / > < ! - profilage - > < inclure resource = "org / springframework / boot / enregistrement / logback / fichier appender.xml" / > < ! - Configuration de la messagerie - > < ressource Include = "courrier-appender.xml" / > < racine = « INFO » > < appender-ref ref = "CONSOLE" / > < appender-ref ref = "FILE" / > < appender-ref ref = "MAIL" / > < / Root > < / Configuration >

Voici le profil de messagerie d'importation et ajoutez la ligne

Configuration du fichier journal

application.properties

logging.path = .. / logs logging.file = .. / logs / file.log logging.level.root = info spring.http.encoding.charset = utf-8

analogique anormale

AppController

emballer com.itunion.log.mail; importation org.slf4j.Logger; importation org.slf4j.LoggerFactory; importation org.springframework.web.bind.annotation.ExceptionHandler; importation org.springframework.web.bind.annotation.RequestMapping; importation org.springframework.web.bind.annotation.ResponseBody; importation org.springframework.web.bind.annotation.RestController; importation java.util.Random; @RequestMapping ( "app /") @RestController public class AppController { enregistreur privé Logger = LoggerFactory.getLogger (AppController.class); @RequestMapping public String SelectList () { booléen flag = new Random () nextBoolean () .; si (drapeau) { throw new RuntimeException ( "erreur requête"); } Else { retour "retour normal de l'heure actuelle:" + System.currentTimeMillis (); } } @ExceptionHandler @ResponseBody public String ExceptionHandler (Exception e) { logger.error (e.getMessage (), e); retourner e.getMessage (); } }

déclencheur ici analogique entreprise officielle anormale, une valeur bool aléatoire qui, si elle est vraie exception d'exécution throw

En général, au centre anormal, pensez à utiliser logger.error (e.getMessage (), e), résultat de retour est non seulement le courrier

Démarrer et essai

Visitez le site http: // localhost: 8080 / app

Pour accéder à la page affiche « erreur requête »

Anormale Capture d'écran Mail

boîte de réception

Italie centrale Experience Deuxième arrêt: découvrir l'Ombrie
Précédent
Compte à rebours de 50 jours de la vie et la mort! Le financement a des centaines de millions de dollars, la plus grande plate-forme de musique indépendante SoundCloud maintenant pourquoi une impasse
Prochain
Wenzhou, une beauté de l'école a été admis à l'élite du monde! Amis lui adresse: Quel beau tyrans universitaires!
Le deuxième trimestre 2017 un rapport sur l'écologie mondiale de risque: le chiffre d'affaires a augmenté, les fusions et acquisitions conditions du marché pire
calendrier du marché immobilier Chengdu: ciseaux rétrécissent, d'accroître l'offre, vendu 11 projets ouverts
Bon nerveux Oh! J'ai entendu que Amazon pour entrer sur le marché du Sud-Est asiatique, nous avons donc mis ce griffues sous-vêtement regardé à travers et à travers
Et l'aube d'hiver séquoia rouge | Illustrated Wuhan
micro-applet Mall canaux Micro (D): API pour obtenir la page de détails du produit dynamique (sur)
Après la foire alimentaire « Design Gallery » a attiré 90 « cargaison balayage, » réseau Red produits « code de balayage » disponible
Ligue des Champions couronne C Luoou encore neuf break Real Madrid 2-1 à Paris dans la boîte de cheval Liverpool 0-0
Supporter le poids de la montée du nationalisme militaire, allemand, ou « enterrer » le système des ambassades des États-Unis?
Et d'autres zones de haute technologie pour une année plaque rouge net enfin est venu le prix Longquan shiling d'eau vendu 25000 / m!
Jouer Domestics transfrontalier acheter un seul jeunes consommateurs à la fin?
Il y a 700 ans, génome moa Bush est la réorganisation complète de la réalité « Jurassic Park » ou imaginaire