文章目录
- 获取 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邮箱的步骤。