SpringBoot Log4j2日志

news/2024/11/14 12:12:12/

Log4j2日志

  • Spring Boot 默认使用 Logback 作为日志记录框架,常见的日志记录框架有 log4j、Logback、Log4j2。
    • 其中 Log4j2 是建立在 Log4j 和 Logback 的基础上的增强版,性能最好,所以选用 Log4j2。
  • SLF4J 是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,它的接口并不能独立使用,需要和具体的日志框架实现配合使用(如log4j、logback、log4j2)。
  • 日志级别: error, warn, info, debug, trace

Spring Boot 使用 Log4j2

  • 排除 Logback 日志组件
    • 在 spring-boot-starter-web 的依赖中加入 排除
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>
  • 添加 Log4j2 组件
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
  • 创建Log4j2.xml
    • 其中 需要修改的是第四行的路径
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="fatal"><Properties><!-- 根据实际情况创建 logs 文件夹(必须手动创建) --><Property name="baseDir" value="E:\Java\logs"/></Properties><Appenders><Console name="Console" target="SYSTEM_OUT"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/><!-- 输出格式,带语法高亮 --><PatternLayoutpattern="[%d{MM:dd HH:mm:ss.SSS}] %highlight{%-5level} %highlight{%c{1.}.%M(%L)} - %msg%n%throwable" disableAnsi="false" noConsoleNoAnsi="false"/></Console><!--debug级别日志文件输出--><RollingFile name="debug_appender" fileName="${baseDir}/debug.log"filePattern="${baseDir}/debug_%i.log.%d{yyyy-MM-dd}"><!-- 过滤器 --><Filters><!-- 限制日志级别在debug及以上在info以下 --><ThresholdFilter level="debug"/><ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><!-- 日志格式 --><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" /><!-- 策略 --><Policies><!-- 每隔一天转存 --><TimeBasedTriggeringPolicy interval="1" modulate="true"/><!-- 文件大小 --><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile><!-- info级别日志文件输出 --><RollingFile name="info_appender" fileName="${baseDir}/info.log"filePattern="${baseDir}/info_%i.log.%d{yyyy-MM-dd}"><!-- 过滤器 --><Filters><!-- 限制日志级别在info及以上在error以下 --><ThresholdFilter level="info"/><ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><!-- 日志格式 --><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/><!-- 策略 --><Policies><!-- 每隔一天转存 --><TimeBasedTriggeringPolicy interval="1" modulate="true"/><!-- 文件大小 --><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile><!-- error级别日志文件输出 --><RollingFile name="error_appender" fileName="${baseDir}/error.log"filePattern="${baseDir}/error_%i.log.%d{yyyy-MM-dd}"><!-- 过滤器 --><Filters><!-- 限制日志级别在error及以上 --><ThresholdFilter level="error"/></Filters><!-- 日志格式 --><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/><Policies><!-- 每隔一天转存 --><TimeBasedTriggeringPolicy interval="1" modulate="true"/><!-- 文件大小 --><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile></Appenders><Loggers><Root level="debug"><AppenderRef ref="Console"/><AppenderRef ref="debug_appender"/><AppenderRef ref="info_appender"/><AppenderRef ref="error_appender"/></Root></Loggers>
</Configuration>

Logger 类

org.slf4j.Logger
常用来记录日志

  • 创建对象:private final Logger log = LoggerFactory.getLogger(Class<?> clazz);
  • 每个日志级别 error, warn, info, debug, trace 都有对应的方法,用于填入日志信息。

使用案例:SpringBoot AOP统一处理Web请求日志


http://www.ppmy.cn/news/21543.html

相关文章

那些你必须知道的CMMI认证知识!

CMMI认证的概述 CMMI认证&#xff0c;即“能力成熟度模型集成&#xff08;也有称为&#xff1a;软件能力成熟度集成模型&#xff09;”&#xff0c;是专门针对软件企业的一个专项认证。CMMI认证是鉴定企业在开发流程化和质量管理上的国际通行标准&#xff0c;全球软件生产标准大…

一文了解websocket和socket(论点:概念、流程、区别)

文章目录概念WebsocketSocket通信流程WebsocketSocket区别&#x1f31e;websocket和socket&#xff0c;字面意思的差别就是一个web&#xff0c;那么他俩之间到底有什么关系呢&#xff0c;以及区别是啥&#xff0c;接下来带大家详细了解一下 概念 Websocket &#x1f34a;Web…

面试官问 ,Mybatis SELECT 查询, 集合或者单个对象,如果数据库不存在数据,需要判空吗?

前言 于昨日下班时段&#xff0c;本人正在与生活作斗争&#xff0c;收到了金三银四一线作战小队成员紧急反应的战况问题。 不熟悉的或者是不知道怎么去看源码的看官&#xff0c;上车了。 正文 这面试题问的&#xff0c; 考察的是什么&#xff1f; ① mybatis框架的应用掌握情…

多位大厂专家鼎力推荐,44个微服务架构设计模式pdf,程序员福利

前言 本文的目标是让架构师和程序员学会使用微服务架构成功开发应用程序。 本文不仅讨论了微服务架构的好处&#xff0c;还描述了它们的弊端。读者将掌握如何在使用单体架构和使用微服务架构之间做出正确的权衡。 谁应该阅读本文&#xff1f; 本文的重点是架构和开发&#…

【C++】C++入门 命名空间 及输入与输出

前言 C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等。熟悉C语言之后&#xff0c;对C学习有一定的帮助。 C补充C语言语法的不足&#xff0c;以及对C语言设计不合理的地方进行优化&#xff0c;比如&#x…

Python数塔dp -A

Python——动态规划——数塔dp -A n数塔dp -A 问题引入 【问题描述】 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点, 则经过的结点的数字之和最小是多少? 已经告诉你了,这是个…

筑基四层 —— 详解三子棋和扫雷

目录 一.修炼必备 二.三子棋详解 三.扫雷详解 四.三子棋和扫雷的完整代码 &#xff01;&#xff01;&#xff01;恭喜你&#xff0c;成功突破至筑基四层&#xff01;&#xff01;&#xff01; 一.修炼必备 1.入门必备&#xff1a;VS2019社区版&#xff0c;下载地址&#xff…

【JavaEE初阶】第九节.多线程 (基础篇)定时器(案例三)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 一、定时器概述、 二、定时器的实现 2.1 Java标准库 定时器的使用 2.2 自己模拟实现一个定时器 2.3 对自己实现的定时器的进一步优化 2.3.1 为何需要再进行优化 2…