springboot 使用log4j2及配置+ 控制台彩色日志+按照大小分割压缩,自动清除过期日志

【Log4j2】Log4j2最佳实践:Log4j2配置超过7天压缩,超过3个月删除文件的滚动日志,分别定义info文件和error文件,按照每小时存储 如果你想要在控制台输出美化的日志信息,你可以使用Log4j2的ConsoleAppender和AnsiColorConverter来实现。在这个配置中,我们新增了一个Console appender(ConsoleAppender),用于在控制台输出美化的日志信息。使用PatternLayout的`%highlight{}`和AnsiColorConverter可以根据日志级别为日志信息添加颜色。在示例配置中,我们为不同的日志级别设置了不同的颜色。 阅读详情

pom依赖修改:

        <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配置

resources/log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<Configuration status="WARN" monitorInterval="5">
    <!--变量配置-->
    <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
    <!-- %logger{36} 表示 Logger 名字最长36个字符 -->
    <Properties>
        <!-- 定义日志格式 -->
        <Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
        <Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
        <Property name="LOG_LEVEL_PATTERN">%5p</Property>
        <Property name="LOG_PATTERN">%clr{%d{${sys:LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${sys:LOG_LEVEL_PATTERN}} %clr{%pid}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}
        </Property>
        <!-- 输出无颜色,文件中的颜色字符会乱码-->
        <Property name="FILE_LOG_PATTERN">%d{${sys:LOG_DATEFORMAT_PATTERN}} ${sys:LOG_LEVEL_PATTERN} %pid --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}
        </Property>
        <!-- 定义文件名变量 -->
        <Property name="FILE_PATH">logs/</Property>
        <!--        <Property name="FILE_NAME">info.log</Property>-->
    </Properties>
    <!-- 定义Appender,即目的地 -->
    <Appenders>
        <!-- 定义输出到屏幕 -->
        <Console name="console" target="SYSTEM_OUT">
            <!-- 日志格式引用上面定义的LOG_PATTERN -->
            <PatternLayout pattern="${LOG_PATTERN}" charset="UTF-8"/>
        </Console>
        <!-- 定义输出到文件,文件名引用上面定义的FILE_NAME -->
        <RollingFile name="info" bufferedIO="true" fileName="${FILE_PATH}/info.log"
                     filePattern="${FILE_PATH}/%d{yyyy-MM-dd}info-%i.log.gz">
            <!--只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${FILE_LOG_PATTERN}" charset="UTF-8"/>
            <Policies>
                <!--interval属性用来指定多久滚动一次,1天创建一个文件-->
                <TimeBasedTriggeringPolicy interval="1"/>
                <!-- 根据文件大小自动切割日志 -->
                <SizeBasedTriggeringPolicy size="1MB"/>
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
            <!-- 保留最近20份 -->
            <DefaultRolloverStrategy max="20">
                <Delete basePath="${FILE_PATH}">
                    <IfFileName glob="*info*.log.gz"/>
                    <IfLastModified age="30d"/>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
        <!-- error单独写入日志,不需要 直接注释整个RollingFile -->
        <RollingFile name="error" bufferedIO="true" fileName="${FILE_PATH}/error.log"
                     filePattern="${FILE_PATH}/%d{yyyy-MM-dd}error-%i.log.gz">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${FILE_LOG_PATTERN}" charset="UTF-8"/>
            <Policies>
                <!--interval属性用来指定多久滚动一次,1天创建一个文件-->
                <!-- 根据文件大小自动切割日志 -->
                <TimeBasedTriggeringPolicy interval="1"/>
                <SizeBasedTriggeringPolicy size="1MB"/>
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
            <!-- 保留最近20份 -->
            <DefaultRolloverStrategy max="20">
                <Delete basePath="${FILE_PATH}">
                    <IfFileName glob="*error*.log.gz"/>
                    <IfLastModified age="30d"/>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
    </Appenders>
    <Loggers>
        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
        <!--        <Logger name="org.apache.ibatis" level="debug" additivity="false">-->
        <!--            <AppenderRef ref="console"/>-->
        <!--        </Logger>-->
        <!--监控系统信息-->
        <!--若是additivity设为false,则子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。不会输出未捕捉的异常及jvm异常-->
        <!--        <Logger name="org.springframework" level="info" additivity="false">-->
        <!--            <AppenderRef ref="Console"/>-->
        <!--        </Logger>-->
        <!-- 指定路径的日志打印级别 -->
        <!--        <Logger name="com.fjc.demo01.controller.HelloController" level="trace" additivity="false">-->
        <!--            <AppenderRef ref="Console"/>-->
        <!--        </Logger>-->
        <Root level="info">
            <!-- 对info级别的日志,输出到console -->
            <AppenderRef ref="console" level="info"/>
            <!-- 对error级别的日志,输出到err,即上面定义的RollingFile -->
            <AppenderRef ref="info"/>
            <AppenderRef ref="error"/>
        </Root>
    </Loggers>
</Configuration>

mybaisPlus配置

mybatis-plus:
  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    log-impl: org.apache.ibatis.logging.log4j2.Log4j2Impl

存在问题:

mybatis plus 使用log4j2,输出级别修改为debug还是只会在控制台输出,不会写到日志文件

logback配置

resources/logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 日志存放路径 -->
    <property name="log.path" value="logs"/>
    <!-- 日志输出格式 -->
    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>


    <!-- sql打印 -->
    <logger name="org.springframework.jdbc.datasource.DataSourceTransactionManager" level="DEBUG"/>
    <logger name="org.springframework.jdbc.core.JdbcTemplate" level="DEBUG"/>
    <logger name="org.springframework.jdbc.datasource.DataSourceUtils" level="DEBUG"/>


    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--            <pattern>${log.pattern}</pattern>-->
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 系统日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="warn"/>

    <root level="info">
        <appender-ref ref="console"/>
    </root>

    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </root>


</configuration>

SpringBoot项目如何优雅配置log4j2彩色日志?5分钟搞定高颜值日志输出 本文详细介绍了如何在SpringBoot项目中配置Log4j2彩色日志,通过替换默认日志框架、编写XML配置文件,实现控制台日志的彩色高亮输出。文章深入解析了配置依赖、核心模式定义以及解决IDE无颜色等常见问题,旨在提升开发调试的效率和视觉体验。 阅读详情

相关推荐

【SpringBoot笔记32】SpringBoot使用MDC + Log4j2添加日志链路追踪标识tracecId,配置控制台彩色日志输出

我们可以统一的在过滤器中,给每一次HTTP请求生成一个唯一的标识traceId,这里我将采用UUID作为请求标识traceId,然后再过滤器中通过调用【MDC】类中的put()和remove()方法,添加和删除traceId到log4j2日志输出中,注意:MDC是slf4j日志门面框架中提供的一个类。

✅ Java 开发工程师 1881

Log4j2 idea控制台打印彩色日志

本博客受用于IDEA控制台输出日志时没有彩色maven依赖:

Tzeao 6967

让数学变得更生动manim库的使用(1)-基本概念

0、概述 数学理论与数学公式的展示总是一件很枯燥的事情,但3b1b的manim动画库在github上开源之后,让这一切变得非常简单。目前这个库已经分成两个版本一个由3b1b自身维护。但作者并没有承诺长期维护该库,所以由专门团队再次基础上研发了相应的社区版,并对该版本进行长期维护。本文的所有案例都基于社区版的官方案例。本文主要介绍该库的基本概念相关的案例,文章主要以代码为主,关键代码都有相关注释。 另外本文的运行环境维jupyter这与其他的ide环境运行代码稍微有些不同 1、类库引入已经相关测试 引

amao1998的博客 9965

SpringBoot 使用 log4j2

SpringBoot默认采用的是logback,本文示范了从项目配置到log4j2配置的完整流程。

【热血蜗牛】的博客 1万+

Halcon 3D点云处理实战:从PLY文件读取到曲面匹配的完整流程(附避坑指南)

本文详细介绍了Halcon在3D点云处理中的完整流程,从PLY文件读取到曲面匹配,特别强调了3D算子的应用技巧和避坑指南。通过实战案例和参数优化建议,帮助开发者高效处理工业视觉检测中的复杂点云数据,提升匹配精度和性能。

weixin_42535720的博客 277

《网络安全自学教程》- 802.1x协议

802.1x协议架构,工作原理/认证流程,认证方式,MAB认证,触发认证的三种方式,EAP报文格式,EAPOL报文格式

wangyuxiang946的博客 2万+

log4j2日志配置颜色

一、需求说明 相关环境说明:maven 3.5.0,jdk1.8 maven依赖: <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.s

u010999809的博客 1万+

微信小程序 - 最新详细实现跳转打开第三方网站方法流程及示例代码,在小程序内直接打开H5页面或微信公众号文章后台业务域名配置及下载校验文件上传服务器,嵌入外部网站跳转第三方h5网页(详细配置及代码)

微信小程序,打开第三方网站,放校验文件,怎么配置业务域名,后台配置,怎么打开外部没有关联的网站,小程序直接打开公众号文章,指定页面,跳转第三方url,跳转到外部网站,小程序跳转到任意外部网页,网站链接,跳转到其他网页(外部链接),小程序嵌入外部h5链接,校验文件怎么放到对方服务器上,要跳转到网站没权限放过去,校验文件验证域名,把校验文件放到对面网站,别人的服务器也打不开没权限怎么放呢,勾选不校验合法域名,txt,打不开别人的网页怎么办,真机调试打不开,无法跳转,有什么其他办法不放校验文件吗,别人不可能同意,

🏆 前端领域优质创作者 1万+

log4j2配置springboot控制台日志颜色

在使用log4j2打印日志时,通过设置Appenders中的target可以改变输出控制台日志的颜色。定义日志输出格式:这样控制台打印的日志就跟springboot颜色一致了。在Appenders中更改PatternLayout。

jasend的博客 2091

在ros中进行多传感器融合定位

ROS 中的 robots_localization 包是一个非常有用的包,可以使用各种卡尔曼滤波器融合任意数量的传感器!我们将使用它将全局姿势数据(x、y、z 和orientation)与机器人上的现有传感器融合,以实现更强大的定位!

如果想成为中心,那么就到中心去吧。 3000

肖特基二极管选型参数,结构原理,工艺与注意问题总结

肖特基二极管(Schottky Diode)是一种特殊的二极管,也被称为肖特基势垒二极管。它是利用金属与半导体接触形成的金属-半导体结原理制成的。与传统的PN结二极管相比,肖特基二极管具有更低的正向压降、更高的开关速度、更高的反向恢复时间以及更好的温度稳定性等特点。本文对肖特基二极管的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 812

eclipse中使用log4j2在控制台输出彩色日志

目录 一.eclipse中安装Ansi Console 二.在log4j2配置文件中配置颜色样式 三.在log4j2.component.properties 配置文件中启用颜色配置 四.附上log4j2配置文件 1.log4j2.xml 2.log4j2.component.properties 一.eclipse中安装Ansi Console 打开eclipse,在Help-&...

E=mc² 3769

[Dify] 如何在Dify中解析上传的TXT文件内容

在Dify平台上构建智能应用时,解析用户上传的.txt文件是关键步骤。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 2635

idea中应用log4j2彩色日志

看到别人的控制台输出是那么美观,再看看自己的是那么凌乱。作为天秤座的一只小白,这怎么能忍受。。。于是,有了这篇log4j2的彩色日志。 先贴上测试结果: 首先,需要两个jar包。如果是maven工程,添加两个依赖。l &lt;dependency&gt; &lt;groupId&gt;org.apache.logging.log4j&lt;/gr...

qq_42058819的博客 8544

ROS 之 使用yocs_velocity_smoother对机器人速度进行限制

yocs_velocity_smoother是一个速度、加速度限制器,用来防止robot navigation的速度/转速过快,加速度/快减速过大。Bound incoming velocity messages according to robot velocity and acceleration limits. The velocity smoother nodelet runs together with the kobuki_node to apply robot’s velocity and .

https://shixuebin.gitee.io/hexo-blog/ 2620

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

idea日志配置(彩色版)

让你的日志记录变的更优秀

qq_45523430的博客 2337

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

log4j2日志滚动压缩,保留指定天数,异步邮件发送,亲测有效

<?xml version="1.0" encoding="UTF-8"?> <!-- 1.把spring-boot-starter的spring-boot-starter-logging 排除掉, 2.引入spring-boot-starter-log4j2、 lombok(@Log4j2), 3.把默认日志文件log4j.properties改为 log4j.properties.back 4.在类上加注解@Log4j2 参考 官网翻译:https://blog.youkuaiyun.com/

qq_36911595的博客 6348

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

log4j2日志

1. log4j2概述 在日常的开发,测试和生产环境中,日志记录了应用,服务运行过程中的关键信息,以及出现异常时的堆栈,这些信息常常作为查询,定位,解决问题的关键,因此在任何系统中,对日志的使用得当,将极大的提高程序问题解决的效率。 slf4j:是众多日志系统的内核,提供统一的接口,不提供具体实现,不是具体可以使用可配置的日志系统。 Log4j:1.x版本虽然已经被广泛使用于很多应用...

zhoujian43的博客 1796

log4j2 支持彩色日志

基本的log4j2配置见上节。1、彩色配置PatternLayout pattern="%highlight{[ %p ] [%-d{yyyy-MM-dd HH:mm:ss}] [ LOGID:%X{logid} ] [%l] %m%n}"/>加上%highlight {}。2、输出

唐影若凡的专栏 6598

log4j2配置(包含压缩、写数据库)

<dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> @Component publi...

W_Q_Q_的博客 2666

Spring boot整合log4j2

以前整合过log4j2,但是今天再次整合发现都忘记了,而且也没有记下来 1.pom.xml中   (1)把spring-boot-starter-web包下面的spring-boot-starter-logging排除 <dependency> <groupId>org.springframework.boot</groupId&gt...

aituochang1886的博客 858

idea打印彩色日志(log4j2)

在Log4j 2.10以前的版本,pattern中配置 %highlight 属性是可以正常打印彩色日志的。如下: %highlight{ 这里是需要彩色打印的内容} <PatternLayout pattern="%highlight{%-5level} %date{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n"/> 但是是更新...

weixin_43900952的博客 1726

log4j 日志压缩

log4j 压缩日志文件配置所需文件:1.创建自己的Appender2.log4j.properties 中 选择自己的Appender3.输出日志测试结果如下总结: 所需文件: commons-logging.jar log4j-1.2.15.jar 1.创建自己的Appender package net.wwwyibu.wechat.service; import java.io.File; import java.io.FileInputStream; import java.io.FileOu

qq_42792934的博客 4942

Log4j2 DefaultRolloverStrategy清理日志实战

基于Log4j2 DefaultRolloverStrategy快速灵活地配置应用日志自动清理策略

gaole93的博客 3423

Log4j2的使用

官网:https://logging.apache.org/log4j/2.x/ 1.在pom.xml里面添加依赖项 <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> <dependency> &...

一明 354
上一篇: docker 安装mysql8.1.0,亲测可用并记录
下一篇: 正则表达式获取链接及标题
619008336
博客等级 码龄5年 33粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值