logback.xml相关配置——springboot项目

SpringBoot整合Logback日志框架配置全解析 由于日志服务一般都在ApplicationContext创建前就初始化了,它并不是必须通过Spring的配置文件控制。因此通过系统属性和传统的Spring Boot外部配置文件依然可以很好的支持日志控制和管理。Logback, orLog4j2orlog4j2.xmlSpringBoot官方推荐使用带有-spring的文件名作为配置,如而不是。这样命名的好处在于:因为标准的配置文件加载得太早,所以不能在其中使用扩展,需要使用。 阅读详情

要在 Spring Boot 项目中将日志写入到 Logback 的配置文件 logback.xml 中,你可以按照以下步骤进行设置:

  1. 创建 Logback 配置文件:

    • 在 src/main/resources 目录下创建一个名为 logback.xml 的文件。这是默认的 Logback 配置文件名,Spring Boot 会自动加载这个文件。
  2. 配置 Logback 输出到文件:

    • 在 logback.xml 文件中,配置一个 <appender> 来定义日志输出的方式。你可以使用 RollingFileAppender 李定义日志输出到文件中。
    • 配置 <file> 标签来指定日志文件的路径和文件名。确保路径是相对于项目根目录的。
    • 配置 <encoder> 标签来定义日志的格式。
  3. 配置日志级别:

    • 使用 <root> 标签来配置根日志记录器,并设置合适的日志级别,例如 <level value="INFO" />。
  4. Spring Boot 应用中使用 Logback:

    • 在 Spring Boot 项目中,Logback 通常是默认的日志框架。你不需要额外的配置来使用 Logback,只需确保 logback.xml 文件正确配置即可。
  5. 重启应用:

    • 一旦你修改了 logback.xml 文件,你可能需要重启你的 Spring Boot 应用程序,以使新的日志配置生效。

下面是一个示例的 logback.xml 配置文件,用于将日志输出到 logs/app.log 文件中:

<configuration>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxHistory>7</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>


    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>

</configuration>

在这个配置中:

  • <maxFileSize>10MB</maxFileSize> 设置了日志文件的最大大小为 10MB。
  • <fileNamePattern>logs/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern> 定义了日志文件的命名模式,%i 表示当文件大小超过限制时,新文件会被命名为 app.日期.序号.log,例如 app.2024-05-21.1.log。
  • <maxHistory>7</maxHistory> 表示保留的历史日志文件数量为 7 个,超过这个数量的日志文件将被删除。

通过这样的配置,当 app.log 文件大小超过 10MB 时,Logback 会自动将该文件改名为 app1.log,并创建新的 app.log 文件来继续写入日志。同时,历史日志文件会根据 maxHistory 的设置进行保留和管理。

  • <timeBasedFileNamingAndTriggeringPolicy> 是 Logback 中的一个类,具体是 ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP。这个类是用于基于时间和文件大小来命名和触发日志文件滚动的策略。

在 Logback 的 RollingFileAppender 中,你可以配置一个 RollingPolicy 来定义日志文件滚动的方式。SizeAndTimeBasedFNATP 是一个结合了时间和文件大小的策略,它可以根据时间和文件大小来触发日志文件的滚动。

具体来说,SizeAndTimeBasedFNATP 可以根据以下两个条件来触发日志文件的滚动:

  1. 时间条件:根据时间来触发日志文件的滚动,例如每天、每小时或者其他时间间隔。
  2. 文件大小条件:根据日志文件的大小来触发日志文件的滚动,当日志文件达到设定的最大大小时,会触发滚动。

通过结合时间和文件大小条件,SizeAndTimeBasedFNATP 可以帮助你控制日志文件的大小和保留历史日志的数量,以避免日志文件过大或占用过多磁盘空间。

在 Logback 的配置中,你可以使用 <timeBasedFileNamingAndTriggeringPolicy> 元素来配置这种基于时间和文件大小的日志文件滚动策略,以便更灵活地管理日志文件的滚动和保留。

下面是一个完整的logback.xml的配置,可根据自己的要求自行修改

<?xml version="1.0" encoding="UTF-8"?>
<!-- scan : 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true-->
<configuration scan="false" scanPeriod="60 seconds" debug="false">
    <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
    <!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
    <!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
    <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
    <contextName>logback</contextName>
    <property name="log.path" value="logs"></property>
    <property name="Console_Pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%logger{50}] - %msg%n"/>

    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <Pattern>${Console_Pattern}</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 时间滚动输出 level为 INFO 日志 -->
    <appender name="RollingFileInfo" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/info.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{50}] - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 每天日志归档路径以及格式 -->
            <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>1  MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录info级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 时间滚动输出 level为 WARN 日志 -->
    <appender name="RollingFileWarn" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/warn.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{50}] - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>1MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录warn级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 时间滚动输出 level为 ERROR 日志 -->
    <appender name="RollingFileError" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{50}] - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>1MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录ERROR级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--additivity:是否继承root节点,默认是true继承。默认情况下子Logger会继承父Logger的appender,
    也就是说子Logger会在父Logger的appender里输出。
    若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。-->
    <logger name="org.springframework" level="INFO" additivity="false">
        <appender-ref ref="Console"/>
        <appender-ref ref="RollingFileInfo"/>
    </logger>
    <logger name="org.mybatis" level="INFO"></logger>
    <Logger name="org.apache.catalina" level="info"/>
    <Logger name="org.apache.tomcat.util" level="info"/>
    <!-- 从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF-->
    <root level="ALL">
        <appender-ref ref="Console"/>
        <appender-ref ref="RollingFileInfo"/>
        <appender-ref ref="RollingFileWarn"/>
        <appender-ref ref="RollingFileError"/>
    </root>

    <!--生产环境:输出到文件-->
    <springProfile name="pro">
        <root level="info">
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFileInfo"/>
            <appender-ref ref="RollingFileWarn"/>
            <appender-ref ref="RollingFileError"/>
        </root>
    </springProfile>
</configuration>

spring boot 配置logback.xml spring boot 默认的日志框架为 logback ,在这里记录一下相关的配置,方便以后使用。 阅读详情

相关推荐

SpringBoot集成logback日志

一.集成logback日志 1.1使用步骤 1.创建SpringBoot框架web项目 2.pom.xml添加ssm需要依赖 <!--SpringBoot框架web项目起步依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</ar

TxCode的博客 541

Logback配置详解——appender

logback 常用配置详解(二)<appender> <appender>标签: <appender>是<configuration>的子节点,是负责写日志的组件。 <appender>有两个必要属性name和class。name指定appender名称,class指定appender的全限定名。 1.Console...

微信公众号:一颗向上的草莓 2640

Spring Boot - 日志文件配置,logback 配置(超详细)

我们的Java程序在IDEA中执行完后,都会编译生成一个target文件,这个文件就是项目最终执行的代码(去掉注释等一系列工作后的文件),那么想要知道lombok的实现原理,就需要去观察这个文件~在生产环境下需要将日志信息保留下来,便于出现问题以后容易追溯问题,将日志保存下来这个活动叫做日志持久化。我们只需要在配置文件中指定日志的存储目录或者是指定日志保存文件名即可,如下。Ps:在没有指定文件名两次保存或者指定相同文件名进行两次保存的情况下,Ps:logger 对象是属于 org.slf4j 包下!

CYK_byte的博客 1万+

springboot-logback.xml详解

logger、appender、discardingThreshold、queueSize、includeCallerData、appender-ref、file、rollingPolicy、FileNamePattern、maxHistory、rollingPolicy

weixin_37862824的博客 2463

保姆级教程:用海思PQTool搞定ISP图像调试,从参数读取到固件烧录全流程

本文提供海思PQTool的ISP图像调试全流程指南,从参数读取、实时调试到固件烧录,涵盖环境配置、核心功能解析、参数固化及生产部署。通过实战案例和避坑指南,帮助开发者高效提升图像质量,适用于海思开发板的ISP调试与优化。

weixin_30872337的博客 283

海鸥派OpenEuler开发板实战:从烧写到SSH连接的完整指南

本文提供海鸥派OpenEuler开发板从开箱到SSH远程连接的完整实战指南。详细介绍了基于海思SD3403/SS928芯片的算力开发板系统烧写、存储扩容、网络配置等关键步骤,帮助开发者快速上手这款AI边缘计算设备,并实现高效的远程开发与管理。

ruby5的博客 1121

springboot项目日志打印,日志文件保存logback-spring.xml相关配置

一、引入pom依赖 <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>4.11</version> </dependency> 二、在项目的resource目录下创建logback-spring.xml文件 在

gangye19970101的博客 1598

机器人控制入门:用SAC算法让机械臂学会抓取(PyBullet仿真教程)

本文详细介绍了如何使用SAC算法在PyBullet仿真环境中训练机械臂完成抓取任务。通过强化学习中的软Actor-Critic(SAC)算法,结合熵最大化机制和双Q网络架构,有效解决了机械臂控制中的探索难题。教程包含环境搭建、算法原理、状态空间设计、奖励函数优化等核心内容,并提供了实用的训练技巧和参数调优指南。

weixin_29091105的博客 366

springboot配置logback.xml遇到的几个问题

首先,默认情况下,logback.xml文件是放在类目录下,即resources文件下。2、就是在resources目录下没有任何logback的配置文件,但是项目也可以运行,代码里输出的log.info日志同样也可以输出。原因是springboot对于resources下没有logback配置文件时,会使用默认的配置文件,就是不能对logback进行个性化配置。另外,logback的配置文件也可以放在resources之外的目录下,比如放到项目根目录下的子目录里,也可以通过配置获取到。

dhklsl的专栏 867

手把手教你搞定MT6701磁编码器的SSI通信与CRC-6校验(附避坑代码)

本文详细介绍了MT6701磁编码器的SSI通信与CRC-6校验的实现方法,包括硬件连接、时序配置、数据读取和专用CRC-6算法。通过提供避坑代码和常见问题解决方案,帮助开发者快速掌握磁编芯片的调试技巧,确保通信稳定可靠。

weixin_30872337的博客 222

YOLOv8 改进有效涨点专栏目录 | 含卷积、主干、注意力机制、Neck、检测头、损失函数、二次创新C2PSA/C3k2等各种网络结构改进

YOLOv8在目标检测领域的地位与优势模型改进的意义与价值本专栏的特色与创新点读者学习路径建议关键改进点回顾不同场景的模型选型建议开源社区资源汇总持续学习路径指南YOLOv8在目标检测领域的地位与优势模型改进的意义与价值本专栏的特色与创新点读者学习路径建议关键改进点回顾不同场景的模型选型建议开源社区资源汇总持续学习路径指南。

weixin_39818775的博客 1074

springBoot引入Slf4j

springboot项目中引入slf4j

ljg963419的博客 1531

orange软件:入门使用

orange做数据分析契机实验手册目录orange软件部分界面展示小试牛刀:数据导入和展示小试牛刀:散点图绘制总结 契机 今天在上大数据时代实验课,作为一名软件工程专业的大三学生,在上这节公选课之前就决定这节课做完这个学期所有的实验报告,可以说“有亿点”不屑;尤其当老师说Python很麻烦的时候,我更是震惊了,因为我接触过这么多编程语言,Python真的很友好了,很傻瓜,但是当老师打开实验手册的时候,我真香了!!!下面先来看看手册的目录: 实验手册目录 为什么会真香呢,因为目录里这些有好多机器学习算法!

weixin_45880844的博客 1万+

SpringBoot日志框架之使用logback作为日志框架

一、前言 1-1、slf4j log4j logback 的区别 可以理解成slf4j相当与List,而log4j相当于arrayList,logback相当于linkedList。也就是slf4j是一个日志接口,具体日志实现交给其它的框架。 1-2、为什么要使用logback来实现日志呢 log4j和logback都是出自一个人之手,而且logback是后面出来的,它各方面性能更好,所以我们新的项目可以直接使用logback。 SpringBoot默认使用的日志框架就是logback,我们在Spri

小道仙的后宫 505

UNet改进(47):Deformable Convolution在UNet中的集成与应用

本文提出了一种可变形U-Net(DeformableUNet)结构,通过在U-Net的双卷积模块中集成可变形卷积(DeformConv2d)来提升模型对物体形变和复杂结构的建模能力。传统卷积受限于固定感受野,而可变形卷积通过动态调整采样位置,能更好地适应不规则形状。实现中,在DoubleConv模块的第二个卷积层替换为可变形卷积,同时保持第一层为标准卷积以确保稳定性。实验表明,该方法在保持参数量基本不变的情况下,显著提升了分割精度(mIoU从0.712提升到0.743)。

2501_91516851的博客 205

【Docker安装】Ubuntu 24.04.2 LTS系统下安装Docker环境——指定APT源安装方式

【Docker安装】Ubuntu 24.04.2 LTS系统下安装Docker环境——指定APT源安装方式

jks212454的博客 627

logback最常用的配置

1.maven引入jar 我这是springboot项目,引入的有如下jar包,有的版本号没写,用的话自己写 <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId&g...

微信公众号:一颗向上的草莓 557

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringBoot集成Logback

SpringBoot集成Logback

囚徒之困 3852

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Logback-学习笔记

logback 初始化配置: 1. logback 会在类路径下寻找名为 logback-test.xml 的文件。 2. 如果没有找到,logback 会继续寻找名为 logback.groovy 的文件。 3. 如果没有找到,logback 会继续寻找名为 logback.xml 的文件。 4. 如果没有找到,将会通过 JDK 提供的 [ServiceLoader](https://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.ht

临安剑客的博客 749

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Springboot配置logback(内含logstash配置)

logback.xml <?xml version="1.0" encoding="UTF-8"?> <!--该日志将日志级别不同的log信息保存到不同的文件中 --> <configuration> <include resource="org/springframework/boot/logging/logback/defaults.xml" /&g...

ewodeyida的博客 2607

46-LogBack日志组件

最大宽度 修饰符,符号是点号"."后面加十进制数。mdc.get()返回的是Object不是String,要想调用String的方法就要强转,例如,((String) mdc.get("k")).contains("val") .MDC可能为null,调用时注意。当执行logback.LogbackDemo类的main方法时,先执行,将级别为“INFO”及大于“INFO”的日志信息交给此loger指定的名为“STDOUT”的appender处理,在控制台中打出日志,不再向loger的上级 传递打印信息;

美好开始来了 854

JAVA教程:SpringBoot项目如何使用Logback日志进行日志打印与收集

本次教程是准备对SpringBoot项目中日志打印进行的配置整理。

wfeil211的博客 273

SpringBoot 集成 logBack

1. POM文件引入 JAR包。spring-boot-starter-parent集成的各种包依赖 ,其中包括日志的包 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <!-- parent,会有一个这个spring-boot-dependencies 里面会有各种.

LZHH_2008的博客 518

SpringBoot2.x 整合logback日志框架

一、使用篇 1、Maven依赖 <!--Begin LogBack Log--> <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --> <dependency> <groupId>ch.qos.logback</groupId> ...

日拱一卒 1665

logback使用实战

前言: 上文我们介绍了log4j的三种使用情况。 本文依旧按照这种方式来介绍下logback的使用。 只不过logback与log4j是有所不同的,logback-classic包本身就引入了slf4j相关包(slf4j-api),而logback-classic包里也包含了slf4j-logback的相关对接实现。所以使用logback-classic包就相当于使用了slf4j 1.logback单独使用 1.1 引入maven依赖 <dependency>

恐龙弟旺仔的博客 1134

springboot项目配置-日志输出

【代码】springboot项目配置-日志输出。

一个搬砖工人 826
上一篇: Java表字段转驼峰以及驼峰转表字段下划线
下一篇: java单元测试Mockito、PowerMockito相关整理
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值