07.03 架构实战篇(十三):Spring Boot Logback 邮件通知

架构实战篇(十三):Spring Boot Logback 邮件通知

日志对于应用程序来说是非常重要的,当你的程序报错了,而你又不知道是多么可怕的一件事情,本文使用logback把程序报错信息邮件到开发者

目录结构

架构实战篇(十三):Spring Boot Logback 邮件通知

目录结构

项目依赖配置

pom.xml


<project> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelversion>4.0.0/<modelversion>
<groupid>com.itunion/<groupid>
<artifactid>spring-boot-log-mail/<artifactid>
<version>0.0.1-SNAPSHOT/<version>
<packaging>jar/<packaging>
<name>spring-boot-log-mail/<name>
<description>Demo project for Spring Boot/<description>
<parent>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-parent/<artifactid>
<version>2.0.3.RELEASE/<version>
<relativepath>
/<parent>
<properties>
<project.build.sourceencoding>UTF-8/<project.build.sourceencoding>
<project.reporting.outputencoding>UTF-8/<project.reporting.outputencoding>
<java.version>1.8/<java.version>
/<properties>
<dependencies>
<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-web/<artifactid>
/<dependency>
<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-devtools/<artifactid>
<scope>runtime/<scope>
/<dependency>
<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-test/<artifactid>
<scope>test/<scope>
/<dependency>

<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-mail/<artifactid>
/<dependency>
/<dependencies>
<build>
<plugins>
<plugin>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-maven-plugin/<artifactid>
/<plugin>
/<plugins>
/<build>
/<project>

这里主要使用了spring boot 邮件的依赖 spring-boot-starter-mail , 确实好方便

日志邮件配置

mail-appender.xml


<included>

<property>
<property>
<property>
<property>
<property>
<property>
<property>
<property>
<appender>
<smtphost>${smtpHost}/<smtphost>
<smtpport>${smtpPort}/<smtpport>
<username>${username}/<username>
<password>${password}/<password>
${SSL}
<asynchronoussending>false/<asynchronoussending>
${mailTo}

<from>${mailFrom}/<from>
<subject>${mailSubject}/<subject>
<layout>
<filter>
<level>ERROR/<level>
/<filter>
/<appender>
/<included>
<property>
<property>
<property>
<property>

这里需要把你自己的邮箱配置上去,并填上你的授权密码

邮箱记得打开 smtp 设置

邮箱记得打开 smtp 设置

邮箱记得打开 smtp 设置

Logback 配置

logback.xml


<configuration>

<include>

<property>

<include>

<include>

<include>
<root>
<appender-ref>
<appender-ref>
<appender-ref>
/<root>
/<configuration>

这里导入邮件配置文件 和增加一行

日志文件配置

application.properties

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

模拟异常

AppController

package 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;
import java.util.Random;
@RequestMapping("/app")
@RestController
public class AppController {
private Logger logger = LoggerFactory.getLogger(AppController.class);
@RequestMapping
public String selectList() {
boolean flag = new Random().nextBoolean();
if (flag) {

throw new RuntimeException("查询报错");
} else {
return "正常返回 当前时间:" + System.currentTimeMillis();
}
}
@ExceptionHandler
@ResponseBody
public String exceptionHandler(Exception e) {
logger.error(e.getMessage(), e);
return e.getMessage();
}
}

这里模拟正式业务的异常触发,随机一个bool值,如果为真就抛出运行时异常

一般都会对异常统一处理,记得要使用 logger.error(e.getMessage(), e); 只是返回结果是不会发邮件的

启动并测试

访问 http://localhost:8080/app

要访问到页面显示"查询报错"

异常邮件截图

架构实战篇(十三):Spring Boot Logback 邮件通知

收件箱

架构实战篇(十三):Spring Boot Logback 邮件通知


分享到:


相關文章: