SpringBoot项目如何自定义日志输出格式

编程入门 行业动态 更新时间:2024-10-28 08:24:16

Springboot项目有几种日志框架,默认是使用Logback日志框架,但我喜欢用Log4j2日志框架,因为Log4j2.性能较强,扩展性强,可自定义level,支持kafka4,数据稳定


默认输出日志格式如下图


我使用log4j2日志框架后的日志输出格式如下图


下面是使用log4j2日志框架设置日志输出格式的步骤

1、pom.xml文件中添加log4j2依赖,并排除掉spring默认的logback日志依赖

<dependency><groupId>.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><!-- 排除掉默认的日志框架 --><exclusions><exclusion><groupId>.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>
<!-- log4j2日志 -->
<dependency><groupId>.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

2、src/main/resources目录下创建log4j2-spring.xml文件

log4j2-spring.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!--设置log4j2的自身log级别为warn -->
<configuration status="warn"><properties><!--这里配置的是日志存到文件中的路径--><Property name="log_path">logs</Property></properties><appenders><!--输出格式布局,每个转换说明符以百分号(%)开头,'%'后面的转换字符有如下:--><!--p (level) 日志级别c(logger) Logger的NameC (class) Logger调用者的全限定类名 ***d (date) 日期highlight 高亮颜色l (location) 调用位置 ***L (line) 行号m (msg/message) 输出的内容M (methode) 调用方法 ***maker marker的全限定名n 输出平台相关的换行符,如'\n' '\r\n'pid (processId) 进程IDlevel (p)日志级别r JVM启动后经过的微秒t (tn/thread/threadName) 线程名称T (tid/threadId) 线程IDtp (threadPriority) 线程优先级x (NDC) 线程Context堆栈--><console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}][%t][%c(类):%L(行)] %m%n"/></console><!-- 这里配置了普通日志的格式和存入文件的路径 --><!-- 如果fileName中是"../info.log",代表日志存放在和项目同级下--><RollingFile name="RollingFileInfo" fileName="${log_path}/info.log"filePattern="${log_path}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"><Filters><ThresholdFilter level="INFO"/><ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><PatternLayout pattern="[%d][%t][%c(类):%L(行)] %m%n"/> <!--  <PatternLayout pattern="[%d][%t] -5level %m%n"/> --><Policies><TimeBasedTriggeringPolicy interval="1" modulate="true"/><SizeBasedTriggeringPolicy size="5 MB"/></Policies></RollingFile><!-- 这里配置了警告日志的格式和存入文件的路径 --><RollingFile name="RollingFileWarn" fileName="${log_path}/warn.log"filePattern="${log_path}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"><Filters><ThresholdFilter level="WARN"/><ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><PatternLayout pattern="[%d][%t][%c(类):%L(行)] %m%n"/> <!-- <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n"/> --><Policies><TimeBasedTriggeringPolicy interval="1" modulate="true"/><SizeBasedTriggeringPolicy size="5 MB"/></Policies></RollingFile><RollingFile name="RollingFileError" fileName="${log_path}/error.log"filePattern="${log_path}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="ERROR"/><PatternLayout pattern="[%d][%t][%c(类):%L(行)] %m%n"/><!--  <PatternLayout pattern="[%d][%t]  %-5level %m%n"/> --><Policies><TimeBasedTriggeringPolicy interval="1" modulate="true"/><SizeBasedTriggeringPolicy size="5 MB"/></Policies></RollingFile><!-- 配置mongdb appender --></appenders><loggers><!-- 过滤redis重连日志 --><logger name="io.lettuce.core.protocol" level="ERROR"><appender-ref ref="ERROR_FILE" /></logger><!--过滤掉spring的一些无用的debug信息--><logger name=".springframework.data.repository.config.RepositoryConfigurationExtensionSupport" level="Error"></logger><logger name=".springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" level="Error"></logger><logger name=".springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping" level="Error"></logger><logger name=".springframework.amqp.rabbit.connection.CachingConnectionFactory" level="Error"></logger><logger name=".springframework.amqp.rabbit.listener.SimpleMessageListenerContainer" level="Error"></logger><logger name=".springframework.boot.web.servlet.FilterRegistrationBean" level="Error"></logger><logger name=".springframework.jmx.export.annotation.AnnotationMBeanExporter" level="Error"></logger><root level="INFO"><appender-ref ref="Console"/><!-- 配置控制台输出日志 --><appender-ref ref="RollingFileInfo"/><!-- 配置普通日志 --><appender-ref ref="RollingFileWarn"/><!-- 配置警告日志 --><appender-ref ref="RollingFileError"/><!-- 配置异常日志 --></root></loggers>
</configuration>

3、这样配置就好了,启动项目可以看到输出的日志信息,有对应的类,对应的行数,对应线程名称


普通日志、警告日志、异常日志信息存放的文件路径(log4j2-spring.xml文件中设置了)

注意:如果log4j2-spring.xml文件不是直接放在src/main/resources目录下,那就需要在application.properties文件中指明路径,如下图,我如果把log4j2-spring.xml文件放在src/main/resources/static目录下,配置如下,也可以设置日志输出等级


日志级别:OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL

debug:代表程序调试日志
info:代表一般输出信息
warn:警告信息
error:异常信息
fatal:灾难性后果比如系统出错

欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感谢。觉得本文章有帮助到的,点个赞呗

更多推荐

自定义,格式,项目,日志,SpringBoot

本文发布于:2023-05-25 00:25:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/218671.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自定义   格式   项目   日志   SpringBoot

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!