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 的日志级别,除非单独配置)。

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

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

相关文章

elementui响应式数据类型变更情况

背景。vue2。data中定义的响应数据类型是[]数组。应用在el-select中&#xff08;非multiple情况&#xff09;。当发生响应数据有变更渲染视图时&#xff0c;发现定义的数组转换成了字符串。 本身不是问题。但因为疏忽引发了watch监听formData数据时产生了产生了多次监听事件。…

人机融合智能 | 人智交互语境下的设计新模态

本章旨在探讨技术与设计领域在人智交互语境下的关系及其影响,讨论通过传统设计对人智交互的优化方法。通过回顾大数据和发展趋势,以 AI技术作为重要的技术推力,我们认为 AI技术将会在未来成为设计领域不可缺少的重要环节,并能够帮助设计师更加高效、准确地开展设计工作。本章着…

C++设计模式分类(GOF-23种设计模式)

文章目录 GOF-23 设计模式分类一、从目的分类1. 创建型&#xff08;Creational&#xff09;模式2. 结构型&#xff08;Structural&#xff09;模式3. 行为型&#xff08;Behavioral&#xff09;模式 二、从范围分类1. 类模式&#xff08;Class Pattern&#xff09;2. 对象模式&…

AbMole| LY294002(M1925)

LY294002是一种广谱的PI3K抑制剂&#xff0c;对PI3Kα/δ/β的IC50分别为0.5 μM/0.57 μM/0.97 μM。LY294002 也可以抑制 CK2 的活性&#xff0c;IC50 为 98 nM。LY294002 还是一种竞争性 DNA-PK 抑制剂&#xff0c;可逆结合 DNA-PK 的激酶结构域&#xff0c;IC50 为 1.4 μM…

第1章,[标签 Win32] :第一个 WIn32 程序,MessageBox 函数

专栏导航 上一篇&#xff1a;第1章&#xff0c;[标签 Win32] &#xff1a;第一个 WIn32 程序&#xff0c;程序入口 回到目录 下一篇&#xff1a;无 本节前言 本节的学习&#xff0c;需要前两节的内容作为先修知识。如果还没有去看本专栏的前两节&#xff0c;请你先去学习它…

求助帖:学Java开发方向还是网络安全方向前景好

最近网络安全被一个培训机构吹得天花乱坠&#xff0c;虽然他家既有网安又有java和UI&#xff0c;我也是学软件工程的&#xff08;山西某211&#xff0c;此机构是每年和我们学校合作的校企公司&#xff09;&#xff0c;但那里的老师仍然大力推荐我学网络安全&#xff08;渗透、代…

OpenCV 图像仿射变换之旋转

一、知识点 1、void warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags INTER_LINEAR, int borderMode BORDER_CONSTANT, …

HCIP-数据通信基础

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 本篇笔记是根据B站上的视频教程整理而成&#xff0c;感谢UP主的精彩讲解&#xff01;如果需要了解更多细节&#xff0c;可以参考以下视频&#xff1a;…

C语言基本数据类型与变量详解

# C语言基本数据类型与变量详解 ## 数据类型概述 在C语言中&#xff0c;数据类型决定了变量在内存中的存储方式和大小&#xff0c;以及可以对其执行的操作。合理选择数据类型能够提高程序的效率和准确性&#xff0c;避免内存浪费和数据溢出等问题。 C语言的基本数据类型主要包括…

Babylon.js学习之路《十、高级几何体:自定义模型与复杂形状生成》

文章目录 1. 引言&#xff1a;高级几何体的应用场景2. 参数化建模&#xff1a;Babylon.MeshBuilder2.1 扩展几何体类型2.2 自定义多边形&#xff08;ExtrudePolygon&#xff09; 3. 顶点级建模&#xff1a;自定义VertexData3.1 手动定义顶点数据3.2 动态生成地形&#xff08;高…

【赵渝强老师】Kubernetes的安全框架

Kubernetes集群的安全框架主要由以下认证、鉴权和准入控制三个阶段组成。这三个阶段的关系如下图所示。 视频讲解如下 【赵渝强老师】Kubernetes的安全框架 认证&#xff08;Authentication&#xff09; 当客户端与Kubernetes集群建立HTTP通信时&#xff0c;首先HTTP请求会进…

CDN与静态资源优化

CDN与静态资源优化 在现代Web系统和AI应用中&#xff0c;随着用户访问量的不断攀升&#xff0c;静态资源&#xff08;如HTML、CSS、JavaScript、图片、音视频、模型文件等&#xff09;带来的负载日益沉重。尤其在大模型推理、前端渲染、广告投放等场景中&#xff0c;静态资源的…

如何填写“appium inspector”内容?

1. 确认已经开启appium的服务&#xff0c;运行appium 参考内容&#xff1a;{"appium:platformName": "Android", # 系统名称"appium:platformVersion": "9", # 安卓版本&#xff0c;看设备"appium:deviceName": "3d…

mysql server层做了什么

服务器处理客户端请求 服务器程序在处理来自客户端的查询请求时&#xff0c;大致需要分为3部分&#xff1a;连接管理、解析与优化、存储引擎。 连接管理 每当有一个客户端进程连接到服务器进程时&#xff0c;服务器进程都会创建一个线程专门处理与这个客户端的交互&#xff…

APISIX 简介:云原生 API 网关的架构与实践

文章目录 引言&#xff1a;APISIX 概述基于Nginx构建的原因基于etcd构建的原因 架构图示架构分层解析管理层&#xff1a;人机交互与配置入口控制层&#xff1a;配置管理与集群协调数据面&#xff1a;请求处理与流量转发说明&#xff1a;关于OpenRestry 引言&#xff1a;APISIX …

【AI作画】第3章 LORA加载器

目录 LORA加载器 管道信息 ​编辑 ​编辑 ​编辑 lora模型的串接 作品集 LORA加载器 前面我们已经分析过节点目录了&#xff0c;现在我们来看一下LORA加载器。我们进行图片渲染&#xff0c;一般都需要LORA模型的。 首先&#xff0c;我们“鼠标右键——添加节点——…

Xilinx XC7A12T‑1CPG238I Artix‑7 FPGA

XC7A12T‑1CPG238I 以其独特的性能与封装组合&#xff0c;成为诸多工程师的首选方案。下面&#xff0c;我们从多个维度对这款芯片做深入剖析。 一、产品定位与封装特点 XC7A12T‑1CPG238I 属于赛灵思&#xff08;Xilinx&#xff09;28 nm Artix‑7 系列中的入门级型号&#x…

如何利用 Java 爬虫获得微店商品详情:实战指南

在电商领域&#xff0c;微店作为众多商家的线上销售渠道之一&#xff0c;其商品详情数据对于市场分析、竞品研究和商业决策具有重要价值。Java 爬虫技术可以帮助我们高效地获取这些数据。本文将详细介绍如何使用 Java 编写爬虫&#xff0c;获取微店商品详情。 一、准备工作 &…

【Bug】MAUI自定义弹窗在IOS有异常背景

文章目录 问题问题代码原因解决处理Bug的具体步骤 问题 自定义弹窗有异常背景 问题代码 <mct:Popup xmlns"http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x"http://schemas.microsoft.com/winfx/2009/xaml"xmlns:converters"clr-names…

C语言酒店管理系统:完整源码与深度解析

酒店管理系统通过自动化流程提升酒店运营效率。本系统采用C语言开发&#xff0c;基于模块化设计思想&#xff0c;包含以下核心功能&#xff1a; ​房间管理​&#xff1a;初始化房间信息、查看房间状态​预订管理​&#xff1a;按时间段预订房间、查询预订记录​入住管理​&am…