Günlükler, uygulamalar için çok önemlidir. Programınız bir hata bildirdiğinde ve bunun ne kadar kötü olduğunu bilmediğinizde, bu makale, program hata bilgilerini geliştiriciye e-posta ile göndermek için günlük geri alma özelliğini kullanır.
Dizin Yapısı
Dizin Yapısı
Proje bağımlılığı yapılandırması
pom.xml
< ? xml version = "1.0" encoding = "UTF-8"? > < proje xmlns = " xmlns: xsi = " xsi: schemaLocation = " > < modelVersion > 4.0.0 < / modelVersion > < Grup kimliği > com.itunion < /Grup kimliği > < artifactId > Spring-boot-log-mail < / artifactId > < versiyon > 0.0.1-SNAPSHOT < / version > < ambalaj > kavanoz < / paketleme > < isim > Spring-boot-log-mail < / isim > < açıklama > Spring Boot için demo projesi < /açıklama > < ebeveyn > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-ebeveyn < / artifactId > < versiyon > 2.0.3. YAYIN < / version > < göreceli yol/ > < ! - depodan ebeveyn araması - > < / ebeveyn > < özellikleri > < project.build.sourceEncoding > UTF-8 < /project.build.sourceEncoding > < project.reporting.outputEncoding > UTF-8 < /project.reporting.outputEncoding > < java.version > 1.8 < /java.version > < /özellikleri > < bağımlılıklar > < bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-web < / artifactId > < /bağımlılık > < bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-devtools < / artifactId > < dürbün > Çalışma süresi < /dürbün > < /bağımlılık > < bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > yay önyükleme başlangıç testi < / artifactId > < dürbün > Ölçek < /dürbün > < /bağımlılık > < ! - Posta - > < bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-mail < / artifactId > < /bağımlılık > < / bağımlılıklar > < inşa etmek > < eklentiler > < Eklenti > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-maven-eklentisi < / artifactId > < /Eklenti > < / plugins > < /inşa etmek > < / proje >Spring boot posta bağımlılığı spring-boot-starter-mail esas olarak burada kullanılır ve bu gerçekten uygundur
Posta yapılandırmasını günlüğe kaydet
mail-appender.xml
< ? xml version = "1.0" encoding = "UTF-8"? > < dahil > < !--E mail ayarları-- > < özellik adı = "smtpHost" value = "smtp.163.com" / > < özellik adı = "smtpPort" value = "25" / > < özellik adı = "mailFrom" value = "xxx@163.com" / > < özellik adı = "kullanıcı adı" değer = "xxx@163.com" / > < özellik adı = "mailTo" value = "xxx@163.com" / > < özellik adı = "şifre" value = "xxx" / > < property name = "SSL" value = "false" / > < property name = "mailSubject" value = "Sistem istisnası" / > < appender name = "MAIL" class = "ch.qos.logback.classic.net.SMTPAppender" > < smtpHost > $ {smtpHost} < / smtpHost > < smtpPort > $ {smtpPort} < / smtpPort > < Kullanıcı adı > $ {kullanıcı adı} < /Kullanıcı adı > < parola > $ {şifre} < /parola > < SSL > $ {SSL} < / SSL > < asynchronousSending > yanlış < / asynchronousSending > < -e > $ {mailTo} < / için > < itibaren > $ {mailFrom} < / dan > < konu > $ {mailSubject} < / konu > < layout class = "ch.qos.logback.classic.html.HTMLLayout" / > < filter class = "ch.qos.logback.classic.filter.ThresholdFilter" > < seviye > HATA < / seviye > < / filtre > < / appender > < /dahil > < özellik adı = "mailFrom" value = "xxx@163.com" / > < özellik adı = "kullanıcı adı" değer = "xxx@163.com" / > < özellik adı = "mailTo" value = "xxx@163.com" / > < özellik adı = "şifre" value = "xxx" / >Burada kendi e-posta adresinizi yapılandırmanız ve yetkilendirme şifrenizi girmeniz gerekir.
Smtp ayarını açmayı unutmayın
Smtp ayarını açmayı unutmayın
Smtp ayarını açmayı unutmayın
Logback yapılandırması
logback.xml
< ? xml version = "1.0" encoding = "UTF-8"? > < konfigürasyon > < ! - Bazı varsayılan ayarlar - > < include resource = "org / springframework / boot / logging / logback / defaults.xml" / > < ! - Günlük dosyası değişkenleri - > < özellik adı = "LOG_FILE" value = "$ {LOG_FILE: - $ {LOG_PATH: - $ {LOG_TEMP: - $ {java.io.tmpdir: - / tmp}}} / spring.log}" / > < ! - Konsol yapılandırması - > < include resource = "org / springframework / boot / logging / logback / console-appender.xml" / > < ! - Dosya yapılandırması - > < include resource = "org / springframework / boot / logging / logback / file-appender.xml" / > < ! - Posta yapılandırması - > < kaynak = "mail-appender.xml" / dahil > < kök düzeyi = "BİLGİ" > < appender-ref ref = "KONSOL" / > < ek-ref ref = "DOSYA" / > < ek-ref ref = "POSTA" / > < /kök > < / configuration >Posta yapılandırma dosyasını buraya aktarın ve bir satır ekleyin
Günlük dosyası yapılandırması
application.properties
logging.path = .. / logs logging.file = .. / logs / file.log logging.level.root = bilgi spring.http.encoding.charset = utf-8Simüle edilmiş istisna
AppController
paket com.itunion.log.mail; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; java.util.Random içe aktarın; @RequestMapping ("/ uygulama") @Filmdenkare public class AppController { private Logger logger = LoggerFactory.getLogger (AppController.class); @RequestMapping public String selectList () { boole bayrağı = new Random (). nextBoolean (); if (bayrak) { yeni RuntimeException ("Sorgu hatası"); } Başka { "Normal dönüş güncel zamanı:" + System.currentTimeMillis (); } } @Hayalhanemersin @Kafadergisi public String exceptionHandler (İstisna e) { logger.error (e.getMessage (), e); return e.getMessage (); } }Bu, resmi işin anormal tetiklenmesini simüle eder, rastgele bir bool değeri, eğer doğruysa, bir çalışma zamanı istisnası
Genel olarak, istisnalar tek tip olarak ele alınır, logger.error (e.getMessage (), e) kullanmayı unutmayın; ancak sonuç posta ile gönderilmeyecektir
Başla ve test et
Http: // localhost: 8080 / app adresini ziyaret edin
"Sorgu hatası" görüntülemek için sayfaya erişmek için
Anormal e-postanın ekran görüntüsü
gelen kutusu