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

news2024/12/24 9:07:57

文章目录

  • 获取 QQ 邮箱授权码
  • 添加依赖
  • 编写 SMTPAppender
  • 运行结果

要实现将 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="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形式。

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

  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邮箱的步骤。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/654106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拿捏指针(二)---对指针的进阶认识(中级)

文章目录 字符指针指针数组数组指针数组指针的定义&数组名与数组名的区别数组指针的使用 数组参数、指针参数一维数组传参二维数组传参一级指针传参二级指针传参 字符指针 我们知道&#xff0c;在指针的类型中有一种指针类型叫字符指针char * 。 字符指针的一般使用方法为…

Pytest自动化测试的三种运行方式

目录 1、主函数模式 2、命令行模式 3、通过读取pytest ini配置文件运行 &#xff08;最主要运用的方式&#xff09; 总结&#xff1a; Pytest 运行方式共有三种&#xff1a; 1、主函数模式 运行所有 pytest.main() 指定模块 pytest.main([-vs],,./testcase/test_day1.py)…

组合逻辑电路设计---多路选择器

目录 1、多路选择器简介 2、硬件设计 3、实验任务 4、程序设计 4.1、模块设计 4.2、绘制波形图 4.3、编写代码 &#xff08;1&#xff09;assign 中条件运算符&#xff08;三目运算符&#xff09;实现方法&#xff1a; &#xff08;2&#xff09;always 语句块中使用 …

逍遥自在学C语言 | 指针的基础用法

前言 在C语言中&#xff0c;指针是一项重要的概念&#xff0c;它允许我们直接访问和操作内存地址。 可以说&#xff0c;指针是C语言一大优势。用得好&#xff0c;你写程序如同赵子龙百万军中取上将首级&#xff1b;用得不好&#xff0c;则各种问题层出不穷&#xff0c;有种双…

.gitignore 忽略文件和目录

1. .gitignore 简介2. .gitignore 注释3. / 开头或结尾的忽略4. glob 模式匹配忽略5. .gitignore 全局忽略6. 忽略已提交到远程仓库的内容7. 使用各种框架下的忽略规则 1. .gitignore 简介 .gitignore 文件的作用就是告诉 git 哪些文件不需要添加到版本管理中&#xff08;定义…

Python如何制作图标点选验证码

本文讲解如何使用python中的opencv库来制作图标点选验证码 图标点选验证码制作起来非常简单,你只需要准备两部分数据集,数据集数量都不用很多,背景图我选择了20个左右,大小为(300, 500)左右,图标我抓取了100多个,图标大小为(40,40)左右,图标由不同大小的透明度构成…

html实现好看的个人介绍,个人主页模板1(附源码)

文章目录 1.设计来源1.1 主界面1.2 关于我界面1.3 自我介绍界面1.4 项目演示界面1.5 个人成就界面1.6 联系我界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/13125310…

01-Maven 安装

一. 下载 apache官网下载 Maven&#xff1a;Maven – Download Apache Maven &#xff0c;根据需要下载不同压缩包。 二. 安装和配置 因为是压缩包不是可执行文件&#xff0c;直接将压缩包进行解压即可&#xff0c;最好放在无中文目录下解压。 1. 配置maven本地仓库 打开解压…

自然语言处理从入门到应用——静态词向量预训练模型:神经网络语言模型(Neural Network Language Model)

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 《自然语言处理从入门到应用——自然语言处理的语言模型&#xff08;Language Model&#xff0c;LM&#xff09;》中介绍了语言模型的基本概念&#xff0c;以及经典的基于离散符号表示的N元语言模型&#xff08;N-gram…

每日一道算法---数组中出现次数超过一半的数字

数组中出现次数超过一半的数字 1.题目2.思路3.代码 1.题目 链接: 数组中出现次数超过一半的数字 2.思路 【解题思路1】&#xff1a; 思路一&#xff1a;数组排序后&#xff0c;如果符合条件的数存在&#xff0c;则一定是数组中间那个数。这种方法虽然容易理解&#xff0c;但…

gcov的使用

什么是代码覆盖率&#xff1f; 代码覆盖率是对整个测试过程中被执行的代码的衡量&#xff0c;它能测量源代码中的哪些语句在测试中被执行&#xff0c;哪些语句尚未被执行。 代码覆盖率的指标种类 代码覆盖率工具通常使用一个或多个标准来确定你的代码在被自动化测试后是否得…

SQL注入第一章节

SQL注入第一章节 1.1 什么是SQL注入 SQL 注入&#xff08;Injection&#xff09; 概述 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理员不知情…

合并表格的指定列按序号排序

这里有一个Excel需求&#xff1a; 如下图所示&#xff0c;需要在序号那一列自动排序下去。 但是是合并的行&#xff0c;而且合并的行数还是不确定的&#xff0c;那怎么给他自动排序下去呢&#xff1f; 解决方法可供参考&#xff1a;使用筛选和COUNT函数完成。 1.第一步筛选 首…

Collection集合

Collection集合面试题 导学 这次课程主要涉及到的是List和Map相关的面试题&#xff0c;比较高频就是 ArrayList LinkedList HashMap ConcurrentHashMap ArrayList底层实现是数组LinkedList底层实现是双向链表HashMap的底层实现使用了众多数据结构&#xff0c;包含了数组、…

5.MySQL索引事务

文章目录 &#x1f43e;1. 索引&#x1f43e;&#x1f490;1.1 概念&#x1f490;&#x1f338;1.2 作用与缺点&#x1f338;&#x1f337;1.2.1作用&#x1f337;&#x1f340;1.2.2缺点&#x1f340; &#x1f339;1.3 使用场景&#x1f339;&#x1f33b;1.4 使用&#x1f3…

阿里云服务器官网

阿里云服务器官网&#xff1a;https://www.aliyun.com/product/ecs 阿里云服务器分为云服务器ECS、轻量应用服务器、GPU云服务器等&#xff0c;云服务器ECS是阿里云明星级产品&#xff0c;专业级云服务器&#xff0c;如下图&#xff1a; 阿里云服务器ECS 阿里云服务器网分享阿…

【论文阅读】Learing to summarize from human feedback

前言 更多关于大模型的文章可见&#xff1a;ShiyuNee/Awesome-Large-Language-Models: Papers about large language models (github.com) 该仓库持续更新 Abs 通过训练模型来向着人类偏好优化可以显著提高摘要质量。 Method High-level methodology 从一个在摘要数据集上…

剑指offer(C++)-JZ3:数组中重复的数字(算法-排序)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的&#xff0c;但不知道有几…

攻防世界-web-Web_python_template_injection

题目描述&#xff1a;只有一句话&#xff0c;翻译出来时python模板注入 1. 思路分析 1.1 什么是python模板注入&#xff1f; 做这道题之前我也不知道什么是python模板注入&#xff0c;问了下chatgpt&#xff0c;回答是这样的&#xff1a; 回答很简洁&#xff0c;举个例子&…

AUTOSAR 架构下的SPI模块的理解

一、SPI模块 1、模块简介 SPI处理程序/驱动程序为单片SPI [串行外设接口]处理程序/驱动程序提供功能和API。该软件模块包括处理和驱动功能。这种单片SPI处理器/驱动器的主要目标是充分利用每个微控制器的功能&#xff0c;并根据静态配置实现优化&#xff0c;以尽可能地满足ECU…