文章目录
- 获取 QQ 邮箱授权码
 - 添加依赖
 - 编写 SMTPAppender
 - 运行结果
 
要实现将 log4j2 输出日志到 QQ 邮箱,需按照以下步骤进行:
-  
在 QQ 邮箱中设置 SMTP 服务,开启 POP3/SMTP 服务,获取 SMTP 服务地址、端口号、登录邮箱账号和密码。
 -  
在 Java 项目中添加 Mail 依赖。
 -  
在 log4j2.xml 配置文件中,添加 SMTPAppender,指定SMTP服务器地址、端口号、邮箱账号和密码等信息。
 -  
在 Logger 中添加 SMTP Appender,指定输出级别和 Appender 名称。以下为一个示例:
 -  
在 Java 代码中使用 log4j2 输出日志,日志输出级别为 SMTP Appender 中指定的级别。
 
完成以上步骤后,启动Java程序,即可将日志输出到指定的QQ邮箱中。
获取 QQ 邮箱授权码
登录 QQ 邮箱 ,点击设置,开启POP3/SMTP 服务,并获取 QQ 邮箱授权码(保存好,后续需要用):

添加依赖
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="youremail@mail.com"
          from="fromemail@mail.com" 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形式。
在实际使用中,你需要替换以下内容:
- SMTP 服务器主机名和端口号;
 - QQ 邮箱地址和授权码,这里是你的 QQ 邮箱地址和授权码;
 - 收件人地址,这里是收件人的电子邮件地址,可以写多个,用逗号分隔;
 - 发件人地址,这里是你的QQ邮箱地址;
 - 邮件主题,这里是发送的邮件主题;
 - 使用的布局,这里使用 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邮箱中。

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



















