Arquitetura artigos reais (xiii): notificação de correio Primavera Bota Logback

Logs para aplicações é muito importante quando você está sendo dado um programa, e você não sabe é uma coisa terrível, usamos o programa dado pelo correio informações logback para o desenvolvedor

Estrutura de Diretórios

Estrutura de Diretórios

Dependente do projecto de configuração

pom.xml

< ? Xml version = "1.0" encoding = "UTF-8"? > < xmlns projeto = " xmlns: xsi = " xsi: schemaLocation = " > < modelVersion > 4.0.0 < / ModelVersion > < groupId > com.itunion < / GroupId > < artifactId > Primavera-boot-log-mail < / ArtifactId > < versão > 0.0.1-INSTANTÂNEO < / Versão > < acondicionamento > jarra < / Embalagem > < nome > Primavera-boot-log-mail < / Name > < descrição > Demonstração do projeto para a Primavera de inicialização < / Descrição > < parente > < groupId > org.springframework.boot < / GroupId > < artifactId > Primavera-boot-starter-parent < / ArtifactId > < versão > 2.0.3.RELEASE < / Versão > < relativePath / >   < ! - pai de pesquisa a partir do repositório - > < / Parent > < Propriedades > < project.build.sourceEncoding > UTF-8 < /project.build.sourceEncoding > < project.reporting.outputEncoding > UTF-8 < /project.reporting.outputEncoding > < java.version > 1.8 < /java.version > < / Propriedades > < dependências > < dependência > < groupId > org.springframework.boot < / GroupId > < artifactId > Primavera-boot-starter-web < / ArtifactId > < / Dependência > < dependência > < groupId > org.springframework.boot < / GroupId > < artifactId > spring-boot-devtools < / ArtifactId > < escopo > runtime < / Scope > < / Dependência > < dependência > < groupId > org.springframework.boot < / GroupId > < artifactId > Primavera-boot-starter-teste < / ArtifactId > < escopo > teste < / Scope > < / Dependência > < ! - Mail - > < dependência > < groupId > org.springframework.boot < / GroupId > < artifactId > Primavera-boot-starter-mail < / ArtifactId > < / Dependência > < / Dependências > < construção > < plugins > < plug-in > < groupId > org.springframework.boot < / GroupId > < artifactId > -Spring-boot maven-plugin < / ArtifactId > < / Plugin > < / Plugins > < / construção > < / Projeto >

Aqui, o principal uso das mensagens de inicialização primavera dependentes de primavera-boot-starter-mail, muito bom conveniente

Configuração de correio Log

Mail-appender.xml

< ? Xml version = "1.0" encoding = "UTF-8"? > < incluído > < ! - Configurações de Mensagens - > < property name = "SMTPHost" value = "smtp.163.com" / > < property name = "smtpPort" value = "25" / > < property name = "MAILFROM" value = "xxx@163.com" / > < property name = "username" value = "xxx@163.com" / > < property name = "mailto" value = "xxx@163.com" / > < property name = valor "password" = "xxx" / > < property name = valor "SSL" = "false" / > < property name = "mailSubject" value = "anormalidades" / > < nome appender = "MAIL" class = "ch.qos.logback.classic.net.SMTPAppender" > < SMTPHost > $ {SMTPHost} < / SMTPHost > < smtpPort > $ {SmtpPort} < / SmtpPort > < nome de usuário > $ {Username} < / Nome de usuário > < senha > $ {Senha} < / senha > < SSL > $ {SSL} < / SSL > < asynchronousSending > falso < / AsynchronousSending > < para > $ {MailTo} < / Para > < de > $ {MAILFROM} < / From > < assunto > $ {MailSubject} < / Assunto > < classe layout = "ch.qos.logback.classic.html.HTMLLayout" / > < classe de filtro = "ch.qos.logback.classic.filter.ThresholdFilter" > < nível > ERROR < / Nível > < / Filtro > < / Appender > < / incluído > < property name = "MAILFROM" value = "xxx@163.com" / > < property name = "username" value = "xxx@163.com" / > < property name = "mailto" value = "xxx@163.com" / > < property name = valor "password" = "xxx" / >

Deve ser a sua própria configuração da caixa postal-se e preencha a sua autorização de senha

Lembre-se de abrir as configurações de caixa de correio SMTP

Lembre-se de abrir as configurações de caixa de correio SMTP

Lembre-se de abrir as configurações de caixa de correio SMTP

Configuração logback

logback.xml

< ? Xml version = "1.0" encoding = "UTF-8"? > < configuração > < ! - configurações padrão de alguns dos - > < incluem recursos = "org / SpringFramework / boot / logging / logback / DEFAULTS.XML" / > < ! - os argumentos de arquivo de log - > < property name = valor "LOG_FILE" = "$ {LOG_FILE: - $ {log_path: - $ {LOG_TEMP: - $ {java.io.tmpdir: - / tmp}}} / spring.log}" / > < ! - configuração Controller - > < incluem recursos = "org / SpringFramework / boot / logging / logback / console-appender.xml" / > < ! - profiling - > < incluem recursos = "org / SpringFramework / boot / logging / logback / file-appender.xml" / > < ! - Configuração Mail - > < incluem recursos = "correio-appender.xml" / > < nível root = "INFO" > < appender-ref ref = "console" / > < appender-ref ref = "file" / > < appender-ref ref = "MAIL" / > < / Root > < / Configuração >

Aqui perfil de importação de mensagens e adicionar a linha

configuração do arquivo de log

application.properties

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

analógico anormal

AppController

empacotar com.itunion.log.mail; importação org.slf4j.Logger; importação org.slf4j.LoggerFactory; importação org.springframework.web.bind.annotation.ExceptionHandler; importação org.springframework.web.bind.annotation.RequestMapping; importação org.springframework.web.bind.annotation.ResponseBody; importação org.springframework.web.bind.annotation.RestController; importação java.util.Random; @RequestMapping ( "app /") @RestController public class AppController { registador particular registador = LoggerFactory.getLogger (AppController.class); @RequestMapping Cordas selectList pública () { bandeira booleano = Random () nextBoolean () .; if (flag) { throw new RuntimeException ( "erro de consulta"); } Else { retornar "tempo atual rendimento normal:" + System.currentTimeMillis (); } } @ExceptionHandler @ResponseBody Cordas ExceptionHandler pública (Exception e) { logger.error (e.getMessage (), e); regresso e.getMessage (); } }

gatilho aqui analógico negócio oficial anormal, um valor bool aleatório que, se verdadeiro lance de tempo de execução exceção

Normalmente centralmente anormal, lembre-se de usar logger.error (e.getMessage (), e); resultado de retorno não é apenas o e-mail

Iniciar e teste

Visita http: // localhost: 8080 / app

Para acessar a página exibe "erro Query"

Anormal correio tela

Caixa de entrada

Central Itália Experiência Segunda paragem: descobrir Umbria
Anterior
Contagem regressiva de 50 dias de vida e morte! Financiamento tem centenas de milhões de dólares, a maior do mundo plataforma de música independente SoundCloud agora por um beco sem saída?
Próximo