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-8analogique 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