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

要在 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>

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

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

相关文章

matplotlib latex表格

使用python3环境 import matplotlib.gridspec as gridspec import matplotlib.pyplot as pltimport numpy as np import matplotlib as mpl #mpl.use(pgf)def figsize(scale, nplots 1):fig_width_pt 390.0 # Get this from LaTeX using \the\text…

五种独立成分分析(ICA)

代码原理及流程 代码实现了混合信号的独立成分分析&#xff08;ICA&#xff09;过程&#xff0c;主要包括以下几个步骤&#xff1a; 原始语音信号读取与显示&#xff1a;首先读入原始的两个语音信号(music.wav和man.wav)&#xff0c;并显示在图中的第一和第二个子图中。混合声…

MacOS使用PhpStorm+Xdebug断点调式

基本环境&#xff1a; MacOS m1 PhpStorm 2024.1 PHP7.4.33 Xdebug v3.1.6 1、php.ini 配置 [xdebug] zend_extension "/opt/homebrew/Cellar/php7.4/7.4.33_6/pecl/20190902/xdebug.so" xdebug.idekey "PHPSTORM" xdebug.c…

基础—SQL—DDL—建表、查表、修改表以及总结

一、DDL—表—创建表与数据类型的设定 &#xff08;1&#xff09;要求 根据需求创建表(设计合理的数据类型、长度) 设计一张员工信息表&#xff0c;要求如下: 1、编号&#xff08;纯数字) 2、员工工号(字符串类型&#xff0c;长度不超过10位) 3、员工姓名&#xff08;字符串类…

是的,我换logo了!

大家好&#xff0c;我是记得诚。 当你收到推文的时候&#xff0c;会发现记得诚换logo了&#xff01; 之前是这样的。 现在是这样的。 这个新logo&#xff08;头像&#xff09;是2年前在淘宝上请人做的&#xff0c;价值37人民币&#xff0c;但一直没有换上。当时还发了一个朋友…

python纯脚本搬砖DNF之深度学习,工作室适用

声明&#xff1a; 本文章仅作学习交流使用,对产生的任何影响&#xff0c;本人概不负责. 转载请注明出处:https://editor.csdn.net/md?articleId103674748 主要功能 脚本已初步完成&#xff0c;可以上机实战了 1.搬砖研究所、海伯伦&#xff08;持续更新中&#xff09; 2.自…

Mysql中表之间的关系

表之间的关系 一对一、多对一&#xff08;其实就是主从关系&#xff0c;在从表中设置一个外键关联上主表&#xff09;、多对多关系&#xff08;需要一个中间表&#xff0c;设置两个外键&#xff0c;分别关联到两个表的主键&#xff09; 比如订单和商品之间&#xff1a;一个订单…

Spring从零开始学使用系列(四)之@PostConstruct和@PreDestroy注解的使用

如果各位老爷觉得可以&#xff0c;请点赞收藏评论&#xff0c;谢谢啦&#xff01;&#xff01; 文章中涉及到的图片均由AI生成 公众号在最下方&#xff01;&#xff01;&#xff01; 目录 1. 介绍 1.1 PostConstruct概述 1.2 PreDestroy概述 2. 基本用法 2.1 注册CommonAnn…

AlexNet论文解析—ImageNet Classification with Deep Convolutional Neural Networks

AlexNet论文解析—ImageNet Classification with Deep Convolutional Neural Networks 2012 研究背景 认识数据集&#xff1a;ImageNet的大规模图像识别挑战赛 LSVRC-2012&#xff1a;ImageNet Large Scale Visual Recoanition Challenge 类别训练数据测试数据图片格式Mnist1…

通关!游戏设计之道Day15

多人游戏——越多越开心 多人游戏能给玩家带来更多的乐趣 面对面 网络对战 大型多人在线 点对点Wifi 在决定了玩家的连接方式后&#xff0c;接下来就要确定他们的玩法类型了。 竞争型 合作型 配合型 多人游戏模式 死亡竞赛/混战模式 团队死亡竞赛 格斗 生存 区域/…

安装mamba时报错bare_metal_version

原因&#xff1a;缺少cuda118的环境版本&#xff0c;直接安装 nvidia/label/cuda-11.8.0 可解决&#xff0c;代码如下&#xff1a; conda install -c "nvidia/label/cuda-11.8.0" cuda-nvcc

【java程序设计期末复习】chapter6 接口和实现

接口与实现 接口 为了克服Java单继承的缺点&#xff0c;Java使用了接口&#xff0c;一个类可以实现多个接口。 使用关键字interface来定义一个接口。接口的定义和类的定义很相似&#xff0c;分为接口的声明和接口体。 接口通过使用关键字interface来声明 interface Printab…

复习java5.26

面向对象和面向过程 面向过程&#xff1a;把一个任务分成一个个的步骤&#xff0c;当要执行这个任务的时候&#xff0c;只需要依次调用就行了 面向对象&#xff1a;把构成任务的事件构成一个个的对象&#xff0c;分别设计这些对象&#xff08;属性和方法&#xff09;、然后把…

MybatisPlus静态工具Db

前言&#xff1a;在开发的时候&#xff0c;有时Service之间也会相互调用&#xff0c;会出现循环依赖问题&#xff0c;MybatisPlus提供一个静态工具类:Db&#xff0c;其中的一些静态方法与IService中方法签名基本一致&#xff0c;也可以帮助我们实现CRUD功能。 一、Db工具类中常…

Tomcat调优参数

JVM优化 Tomcat是一个Web容器&#xff0c;所有的jar其实都共享Tomcat中的JVM参数&#xff0c;所以Tomcat的JVM参数优化至关重要。 Tomcat的JVM参数是在启动脚本中设置的&#xff0c;如想要设置最大堆内存和最小堆内存时&#xff1a; 在windows的启动脚本catalina.bat中的set &q…

深度学习面试问题总结(21)| 模型优化

本文给大家带来的百面算法工程师是深度学习模型优化面试总结&#xff0c;文章内总结了常见的提问问题&#xff0c;旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中&#xff0c;我们还将介绍一些常见的深度学习面试问题&#xff0c;并提供参考的回答及其理论基础&a…

入门五(项目介绍及登录和发布需求)

软件缺陷判定标准 项目中缺陷的管理流程 使用Excel对于缺陷进行管理 使用工具管理缺陷 一、项目背景 传智作为一个IT教育机构&#xff0c;拥有自己开发且实际运营的产品&#xff1b; 将开发和运营的技术作为授课的内容&#xff0c;对于学员而言学到的都是一手的真实案例和…

unordered_mapset

文章目录 Ⅰ. 使用a. unordered_mapb. unordered_set Ⅱ. 哈希表a. 闭散列&#xff1a;线性探测1.仿函数&#xff0c;2.插入&#xff0c;3.删除&#xff0c;4.查找&#xff0c;5.扩容 b. 开散列&#xff1a;哈希桶1.仿函数&#xff0c;2.插入&#xff0c;3.删除&#xff0c;4.查…

释放Mac潜能,选择Magic Disk Cleaner for Mac

想要让Mac运行更加流畅、性能更加出色吗&#xff1f;那就选择Magic Disk Cleaner for Mac吧&#xff01; Magic Disk Cleaner for Mac v2.7.7激活版下载 这款软件是Mac用户的得力助手&#xff0c;它拥有强大的扫描和清理功能&#xff0c;能够迅速找出并删除硬盘上的无用文件和垃…

如何查看哪些组策略应用于你的电脑和用户帐户?这里有详细步骤

如果你希望在电脑上查看所有有效的组策略设置,以下是操作方法。 什么是Windows中的组策略 在Windows世界中,组策略为网络管理员提供了一种将特定设置分配给用户组或计算机组的方法。然后,无论何时组中的用户登录到联网的PC,或无论何时启动组中的PC,都会应用这些设置。 …