六.logback记录日志文件并按大小日期分割文件

embedded/2025/2/12 11:36:18/

文章目录

  • 前言
  • 一、`log4j,log4j2,logback,slf4j`的关系?
  • 二、使用`logback`配置自定义日志记录
    • 1.引入库
    • 2.创建配置文件`logback-spring.xml`
    • 3.配置示例如下
  • 总结


前言

通常我们项目中控制台能显示输出系统运行的日志,但是当我们的项目部署到线上环境的时候,我们一般需要要将日志记录保存成日志文件,方便线上排查问题和调试,此篇主要介绍如何通过配置springboot默认的日志框架logback来记录日志文件。


配置前先通俗点解释下日志框架

logbackslf4j_11">一、log4j,log4j2,logback,slf4j的关系?

这里通俗的一句话概括就是slf4j是一个抽象层的日志框架,它只负责定规范,不负责具体实现,那么其他的log4j,log4j2,logback就是slf4j的实现层框架;

Spring Boot默认使用SLF4J作为日志门面,并且默认集成了Logback日志实现框架

平常使用的时候就只需要调用slf4j接口即可,无需关心其具体实现,并且我们可以随意切换或配置不同的实现层框架。

logback_19">二、使用logback配置自定义日志记录

1.引入库

这里我们使用的是logback,由于spring boot默认在spring-boot-starter包中就包含了该包的引用,所以无需再额外引入

logbackspringxml_23">2.创建配置文件logback-spring.xml

由于我们需要记录项目中所有模块的日志,故我们将配置文件放在light-common模块中,在resources目录中创建该配置文件,结构如图:
在这里插入图片描述

3.配置示例如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 引用默认日志配置 --><include resource="org/springframework/boot/logging/logback/defaults.xml"/><!--使用默认的控制台日志输出实现--><include resource="org/springframework/boot/logging/logback/console-appender.xml"/><!-- 应用名称 --><springProperty scope="context" name="spring.application.name" source="spring.application.name" defaultValue="springBoot"/><!-- 日志文件名称前缀,spring-boot-admin监控时要与yml配置的Actuator监控日志一致 --><property name="log.file.prefix" value="${spring.application.name}"/><!-- 日志文件路径 --><property name="log.path" value="./logs"/><!-- 日志最大的历史保留天数 --><property name="maxHistory" value="7"/><!-- 日志最大文件大小 --><property name="maxFileSize" value="10MB"/><!-- 字符集 --><property name="charset" value="UTF-8"/><!-- DEBUG 日志输出到文件 --><appender name="file_debug" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><encoder><!--设置为默认的文件日志格式--><pattern>${FILE_LOG_PATTERN}</pattern><charset>${charset}</charset></encoder><!--滚动策略,SizeAndTimeBasedRollingPolicy必须加上maxFileSize属性--><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- 日志默认压缩路径,将超过指定文件大小的日志,进行存档,%d{yyyy-MM,aux}这个aux表示该%d是辅助配置,不需要按照此滚动打包,这样logback就可以按照后面的%d{yyyy-MM-dd}每日滚动打包 --><fileNamePattern>${log.path}/%d{yyyy-MM,aux}/${log.file.prefix}-debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern><maxFileSize>${maxFileSize}</maxFileSize><maxHistory>${maxHistory}</maxHistory></rollingPolicy></appender><!-- ERROR 日志输出到文件 --><appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><encoder><!--设置为默认的文件日志格式--><pattern>${FILE_LOG_PATTERN}</pattern><charset>${charset}</charset></encoder><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- 日志默认压缩路径,将超过指定文件大小的日志,进行存档,%d{yyyy-MM,aux}这个aux表示该%d是辅助配置,不需要按照此滚动打包,这样logback就可以按照后面的%d{yyyy-MM-dd}每日滚动打包 --><fileNamePattern>${log.path}/%d{yyyy-MM,aux}/${log.file.prefix}-error.%d{yyyy-MM-dd}.%i.log</fileNamePattern><maxFileSize>${maxFileSize}</maxFileSize><maxHistory>${maxHistory}</maxHistory></rollingPolicy></appender><!-- 控制框架输出日志 --><logger name="org.mybatis" level="INFO"/><logger name="springfox" level="INFO"/><!-- 根日志配置 --><root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="file_debug"/><appender-ref ref="file_error"/></root>
</configuration>

总结

此文主要使用logback来记录日志,并结合自身项目需求来进行配置,如需使用其他log4j,log4j2来作为日志实现框架,配置有一定的区别,不在此介绍,请参考官网说明。


http://www.ppmy.cn/embedded/161583.html

相关文章

SMB开启和关闭

高版本和低版本操作系统之间共享文件会因为SMB协议问题无法访问&#xff0c;开启和关闭操作如下&#xff1a; --查看 PS C:\Windows\system32> Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol EnableSMB1Protocol EnableSMB2Protocol ----…

国产化人工智能“产学 研用”一体化创新模式的智慧快消开源了

智慧快消视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。国产化人工智能“…

Arduino 第四章:数字输出 —— 深入解析引脚差异与 LED 顺序点亮实践

引言 在电子制作与自动化控制领域&#xff0c;Arduino 以其简单易用和强大的扩展性成为众多爱好者和专业开发者的首选平台。数字输出作为 Arduino 基础且重要的功能之一&#xff0c;能让我们通过程序控制外部设备&#xff0c;如点亮 LED 灯、驱动继电器等。在这一章节&#xf…

timescaladb时序数据库高可用docker镜像使用

timescaladb时序数据库高可用docker镜像使用 timescaladb时序数据库高可用&#xff0c;基于bitnami/postgresql-repmgr docker镜像制作&#xff0c;实现数据同步和故障自动转移主备切换。 使用示例 参考&#xff0c;附docker compose配置例。 pg-0:image: wjy2020/timescal…

算法兵法全略(译文)

目录 始计篇 谋攻篇 军形篇 兵势篇 虚实篇 军争篇 九变篇 行军篇 地形篇 九地篇 火攻篇 用间篇 始计篇 算法&#xff0c;在当今时代&#xff0c;犹如国家关键的战略武器&#xff0c;也是处理各类事务的核心枢纽。算法的世界神秘且变化万千&#xff0c;不够贤能聪慧…

深入解析 Android 系统属性 跨进程 API:SystemProperties、ContentObserver 的使用

基础篇.系统属性 & 跨进程 API &#x1f4e2; 1. 职业规划篇 来聊聊安卓职业规划&#xff1f;整机开发大专能做么&#xff1f; &#x1f4e2; 2.基础篇 基础篇.前言 基础篇.编译环境搭建 基础篇.源码目录简介 基础篇.系统 mk_bp 讲解 基础篇.开机动画定制 基础篇.定制桌面壁…

C++设计模式 —— 建造者模式

C设计模式 —— 建造者模式 一个例子什么是建造者模式核心思想主要角色优点缺点适用场景 对于汉堡实现建造者模式 我们之前已经了解了单例模式&#xff0c;工厂模式&#xff0c;今天我们来学习建造者模式 一个例子 假设你是老爹汉堡店的员工&#xff0c;你知道这个店的顾客非…

怎麼使用靜態住宅IP進行多社媒帳號管理

隨著社交媒體平臺的多樣化&#xff0c;很多人發現一個社媒帳號已經無法滿足需求。以下是幾個常見場景&#xff1a; 企業需求&#xff1a;企業可能需要在不同平臺上運營多個品牌帳號&#xff0c;為每個市場地區單獨設立帳號。個人需求&#xff1a;一些自由職業者或內容創作者可…