深入理解 SpringBoot 日志框架:从入门到高级应用——(六)Log4j2 输出日志到 QQ邮箱

要实现将 log4j2 输出日志到 QQ 邮箱,需按照以下步骤进行:

  1. 在 QQ 邮箱中设置 SMTP 服务,开启 POP3/SMTP 服务,获取 SMTP 服务地址、端口号、登录邮箱账号和密码。

  2. 在 Java 项目中添加 Mail 依赖。

  3. 在 log4j2.xml 配置文件中,添加 SMTPAppender,指定SMTP服务器地址、端口号、邮箱账号和密码等信息。

  4. 在 Logger 中添加 SMTP Appender,指定输出级别和 Appender 名称。以下为一个示例:

  5. 在 Java 代码中使用 log4j2 输出日志,日志输出级别为 SMTP Appender 中指定的级别。

完成以上步骤后,启动Java程序,即可将日志输出到指定的QQ邮箱中。

获取 QQ 邮箱授权码

登录 QQ 邮箱 ,点击设置,开启POP3/SMTP 服务,并获取 QQ 邮箱授权码(保存好,后续需要用):

image-20210721183022698

添加依赖

Spring Boot 中使用了 SLF4J + Logback 作为默认的日志框架,因此我们不需要再次添加依赖项,只需要添加 Email 的依赖即可:

<!--mail依赖-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

编写 SMTPAppender

在log4j2 的配置文件中添加 SMTPAppender。具体配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <SMTP name="Mail" subject="Log4j2 Test Mail" to="[email protected]"
          from="[email protected]" smtpHost="smtp.gmail.com" smtpPort="587" smtpUsername="yourusername"
          smtpPassword="yourpassword" smtpProtocol="smtp" smtpDebug="true"
          htmlMsgLayout="${htmlMsgLayout}">
      <ThresholdFilter level="WARN"/>
    </SMTP>
  </Appenders>
  <Layouts>
    <HtmlLayout title="Log4j2 Test Mail">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </HtmlLayout>
  </Layouts>
  <Loggers>
    <Root level="all">
      <AppenderRef ref="Mail" />
    </Root>
  </Loggers>
</Configuration>

在这个配置文件中,我们使用SMTPAppender来发送邮件。其中,我们设置了SMTP服务器的主机名、端口、用户名和密码等信息,并指定了发送的邮件内容为html格式。我们还定义了一个HtmlLayout来格式化邮件内容,它将普通的日志信息格式化为html形式。

在实际使用中,你需要替换以下内容:

  1. SMTP 服务器主机名和端口号;
  2. QQ 邮箱地址和授权码,这里是你的 QQ 邮箱地址和授权码;
  3. 收件人地址,这里是收件人的电子邮件地址,可以写多个,用逗号分隔;
  4. 发件人地址,这里是你的QQ邮箱地址;
  5. 邮件主题,这里是发送的邮件主题;
  6. 使用的布局,这里使用 HTML 布局,你也可以选择其他的布局。

运行结果

测试发送日志邮件。在代码中添加日志打印语句,如:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Log4j2Test {
    
    
    private static final Logger logger = LogManager.getLogger(Log4j2Test.class);
    public static void main(String[] args) {
    
    
        logger.error("日志测试");
    }
}

运行程序,会自动发送日志邮件到指定的QQ邮箱中。

image-20230616204243789

以上就是将log4j2输出日志到QQ邮箱的步骤。

猜你喜欢

转载自blog.csdn.net/qq_20185737/article/details/131253414
今日推荐