当前位置: 首页 > news >正文

Logback示例解析

<configuration><!-- 环境变量 --><springProperty scope="context" name="app.name" source="spring.application.name" defaultValue="application"/><!-- 日志存放路径 --><property name="log.path" value="./logs" /><!-- 日志输出格式 --><property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - [%method,%line] - %msg%n" /><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${log.pattern}</pattern></encoder></appender><!-- 常规日志文件 --><appender name="file_all" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/${app.name}.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/${app.name}.%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>7</maxHistory><totalSizeCap>1GB</totalSizeCap></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder></appender><!-- 日志级别控制 --><logger name="com.lg" level="info" /><logger name="org.springframework" level="info" /><logger name="com.alibaba.nacos" level="info" /><!-- 根日志配置 --><root level="info"><appender-ref ref="console" /><appender-ref ref="file_all" />  <!-- 使用已定义的 file_all --></root>
</configuration>

该配置文件是 Logback(Java 常用日志框架)的 XML 格式配置,主要用于定义日志的输出策略、格式、存储路径及日志级别控制。以下是逐部分的详细解析:

一、环境变量与基础属性

<!-- 环境变量 -->
<springProperty scope="context" name="app.name" source="spring.application.name" defaultValue="application"/>
  • 作用:通过 Spring 的 Environment 获取属性值,用于动态配置日志相关参数(如应用名称)。
  • 细节
    • scope="context":表示该属性会被放入 Logback 的上下文(LoggerContext)中,供其他组件引用。
    • source="spring.application.name":从 Spring 环境中获取 spring.application.name 的值(通常是 Spring Boot 项目的应用名)。
    • defaultValue="application":若 Spring 环境中未配置 spring.application.name,则使用默认值 “application”。

二、全局属性定义

<!-- 日志存放路径 -->
<property name="log.path" value="./logs" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - [%method,%line] - %msg%n" />
  • log.path:定义日志文件的存储根路径(当前为项目根目录下的 ./logs 目录)。
  • log.pattern:定义日志的输出格式(控制台和文件均使用此格式),各占位符含义:
    • %d{yyyy-MM-dd HH:mm:ss.SSS}:时间戳(精确到毫秒)。
    • %thread:线程名。
    • %-5level:日志级别(如 INFOERROR,左对齐占5字符)。
    • %logger{36}:Logger 名称(类全限定名,最多显示36字符)。
    • %method:日志调用方法名。
    • %line:日志调用行号。
    • %msg:日志具体内容。
    • %n:换行符。

三、日志输出器(Appender)

日志输出器负责将日志发送到目标目的地(如控制台、文件)。

3.1 控制台输出器(ConsoleAppender)

<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${log.pattern}</pattern></encoder>
</appender>
  • 作用:将日志输出到控制台(终端)。
  • encoder:定义日志的编码格式(此处直接复用全局的 log.pattern)。

3.2 滚动文件输出器(RollingFileAppender)

<!-- 常规日志文件 -->
<appender name="file_all" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/${app.name}.log</file> <!-- 当前日志文件路径 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/${app.name}.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 滚动后文件名模式 --><maxHistory>7</maxHistory> <!-- 最多保留7天的历史日志 --><totalSizeCap>1GB</totalSizeCap> <!-- 所有滚动文件总大小上限 --></rollingPolicy><encoder><pattern>${log.pattern}</pattern> <!-- 复用全局格式 --></encoder>
</appender>
  • 作用:将日志写入文件,并按时间滚动归档,避免单一日志文件过大。
  • 关键配置
    • <file>:当前正在写入的日志文件路径(${log.path}/${app.name}.log,如 ./logs/application.log)。
    • <rollingPolicy>:滚动策略(此处使用基于时间的滚动)。
      • <fileNamePattern>:滚动后文件的命名模式(%d{yyyy-MM-dd} 表示按日期滚动,如 application.2024-05-20.log)。
      • <maxHistory>:保留最近7天的日志文件,超过的会被删除。
      • <totalSizeCap>:所有滚动文件的总大小不超过1GB(Logback 1.1.7+ 支持)。
    • <encoder>:日志格式与控制台一致,保证日志内容可读性。

四、日志级别控制(Logger)

<!-- 日志级别控制 -->
<logger name="com.lg" level="info" /> <!-- 自定义包,输出INFO及以上级别 -->
<logger name="org.springframework" level="info" /> <!-- Spring框架,输出INFO及以上 -->
<logger name="com.alibaba.nacos" level="info" /> <!-- Nacos客户端,输出INFO及以上 -->
  • 作用:针对特定包(或类)设置日志级别,控制其输出粒度。
  • 细节
    • name:包名(支持通配符,如 com.lg.* 匹配 com.lg 下的所有子包)。
    • level:日志级别(TRACE < DEBUG < INFO < WARN < ERROR < ALL/OFF)。
    • 示例:com.lg 包下的日志仅输出 INFOWARNERROR 级别(DEBUG 及以下被过滤)。

五、根日志配置(Root Logger)

<!-- 根日志配置 -->
<root level="info"> <!-- 根日志级别为INFO --><appender-ref ref="console" /> <!-- 输出到控制台 --><appender-ref ref="file_all" /> <!-- 输出到滚动文件 -->
</root>
  • 作用:全局日志的默认配置(未被其他 logger 匹配的日志会使用根日志配置)。
  • 细节
    • level="info":根日志级别为 INFO,即所有 INFO 及以上级别的日志会被处理(除非被更具体的 logger 覆盖)。
    • <appender-ref>:引用已定义的 appender(此处关联控制台和滚动文件输出器)。

六、总结

该配置实现了以下核心功能:

  1. 动态应用名:通过 springProperty 自动获取 Spring 应用名,日志文件名动态生成。
  2. 控制台输出:实时查看日志(开发环境常用)。
  3. 滚动文件存储:按日期滚动日志文件,限制保留天数和总大小,避免磁盘占满。
  4. 分级日志级别:针对特定包(如业务包、框架包)设置独立日志级别,平衡日志详细度和性能。
  5. 统一日志格式:控制台和文件日志格式一致,便于问题排查。

七、注意事项

  • 目录权限:需确保 log.path(如 ./logs)目录存在且有写入权限,否则日志无法生成(Logback 不会自动创建目录)。
  • 版本兼容性totalSizeCap 需 Logback 1.1.7+ 版本支持,旧版本需移除该配置。
  • 日志级别继承loggername 支持包路径继承(如 com.lg.service 会继承 com.lg 的日志级别,除非单独配置)。

相关文章:

  • 云徙科技 OMS:让订单管理变得轻松又高效
  • python高校工作室管理系统
  • 【服务器R环境架构】基于 micromamba下载 R 库包
  • linux的基本运维
  • 【网络安全】文件上传型XSS攻击解析
  • 音视频合并避坑指南,封装过程中的解决办法
  • 云主机远程连接与防火墙安全配置指南:协同防护是关键
  • Web Splats
  • LeetCode 2942.查找包含给定字符的单词
  • 短剧CPS分销系统开发 - 专业内容变现与渠道拓展解决方案
  • Java 集合框架底层数据结构实现深度解析
  • OSI网络通信模型详解
  • 开疆智能ModbusTCP转EtherCAT网关连接穆格伺服阀配置案例
  • Vue2 ElementUI Tree 拖动目标节点能否被放置及获取放置位置
  • linux pcie【7】- epf设备创建过程
  • Excel常用公式大全
  • 4.文件管理(文本、日志、Excel表)
  • 技术干货 | DAC静态参数计算全解析:从偏移误差到总未调整误差
  • 【Go语言基础】对齐边界与内存填充
  • davinci本地启动
  • 网站建设得步骤/自己搜20条优化措施
  • 什么是手机网站建设/谷歌三件套一键安装
  • 上海高端网站建设定制/超级搜索引擎
  • 长春建站公众号/网络营销的有哪些特点
  • 北京完美建设有限公司网站/seo权威入门教程
  • 开发网站类型/微网站