logback-spring.xml详解

news2024/12/28 3:40:00

本文来写说下logback-spring.xml相关的知识与概念

文章目录

  • 概述
  • configuration元素
  • 定义上下文名称
  • 定义变量
  • appender组件


概述

对于xml日志文件的配置,大多数人第一次接触时有一种望而生畏的感觉,其实如果仔细分析,会发现核心的部分只有三个元素:appender、logger、root

在这里插入图片描述
通过上图我们可以清晰的了解整个xml文件的元素及功能。

其中configuration是根元素,必须的;logger和root可视为同一类,都是日志组件;logger定义日志从哪里(包)获取以及级别;appender配置日志格式、如何过滤、文件处理等。property和contextName元素,分别用来定义变量和应用上下文名称,非必须。

先通过一个简单的日志模板,从视觉上感受一下:

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %
      logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
  <logger name="chapters.configuration" level="INFO"/>
  <root level="DEBUG">          
    <appender-ref ref="STDOUT" />
  </root>  
</configuration>

上述实例定义了控制台输出debug级别日志的配置。下面对相关的元素进行逐一讲解。


configuration元素

logback.xml配置文件的基本结构可以描述为configuration元素,包含零个或多个appender元素,后跟零个或多个logger元素,后跟最多一个root元素(也可以没有)。

根元素configuration有三个属性:

  • debug:默认为false,若设置为true,则打印出logback内部日志信息。
  • scan:默认值为true,若设置为true,配置文件如果发生改变,将会被重新加载。
  • scanPeriod:与scan配合使用,当scan为true时,此属性生效,默认的时间间隔为1分钟,设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。如可以设置为scanPeriod="30 seconds"每30秒检测一次。

定义上下文名称

contextName元素,每一个日志组件(logger)都会关联到日志上下文,默认上下文名称是’default’,用于标识应用,如果多个应用输出到同一个地方,就有必要使用%contextName来区别。

上线文的配置直接在configuration元素下:

<configuration>
    <contextName>HelloWorld-log</contextName>
</configuration>

经过定义之后,在其他property属性或appender中便可通过“%contextName”来获取和使用该上下文名称了。


定义变量

通过property元素可定义变量。它有name和value两个属性。变量可以使“${name}”来使用变量。作用类似于代码中的常量字符串,定义之后公共地方便可以统一使用。如日志文件名称前缀、日志路径、日志输出格式等。

<configuration>
    <property name="log.path" value="./log" />
</configuration>

上面便是定义了日志的根路径的变量。

如果是在Spring或SpringBoot项目当中,想让value值是通过配置文件获取,可使用springProperty来定义。

<springProperty scope="context" name="log.path" 
source="catalina.base"/>

其中source指定的catalina.base便是在application.properties当中配置变量。此配置还是比较常用的,可以做到灵活区分环境。


appender组件

appender组件用来定义日志输出格式,日志如何过滤以及日志文件的处理。appender的结构如下:

在这里插入图片描述
appender的属性有name和class。name指定appender名称,后面使用该appender是也是通过名称来指定。

class属性指定要实例化的appender类的完全限定名称。appender类默认有以下几种:

  • ConsoleAppender:日志输出到控制台,类名ch.qos.logback.core.ConsoleAppender。
  • FileAppender:日志输入到文件,类名ch.qos.logback.core.FileAppender。
  • RollingFileAppender:滚动记录文件,FileAppender的子类,当符合条件(大小、时间),日志进行切分处理。类名:ch.qos.logback.core.rolling.RollingFileAppender。

appender元素可以包含零个或一个layout元素,零个或多个encoder元素以及零个或多个filter元素。

实战中ConsoleAppender及RollingFileAppender使用较多,若需要自定义如把日志输出到消息队列,可以自定义实现AppenderBase接口。

ConsoleAppender上面已经有示例,主要作用就是将日志输出到控制台,并通过pattern元素指定了输出的格式。下面重点看一下RollingFileAppender的配置。


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

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

相关文章

【黄啊码】为什么程序员大都鄙视php?

“PHP 是世界上最好的语言”。。。“吗”&#xff1f;相信很多人跟我一样&#xff0c;都会在后边打个问号。这些年以来&#xff0c;“PHP 已死”、“PHP 行将消亡”之类的言论甚嚣尘上&#xff0c;由此看得出&#xff0c;很多开发人员讨厌 PHP。这又是为什么呢&#xff1f;PHP …

Nginx配置https证书遇到的一个问题

前言 今天在给一个站点配置 HTTPS 证书的时候&#xff0c;遇到了一个问题&#xff0c;写此文章记录一下解决过程。 环境 Ubuntu 22.04 Nginx 1.18 过程 今天给一个站点申请了 HTTPS 证书&#xff0c;然后在 Nginx 中进行配置&#xff0c;Nginx 的 SSL 配置如下&#xff1a…

Matplotlib---饼图

1. 饼图 pie()函数用于绘制饼图&#xff0c;其基本语法如下&#xff1a; plt.pie(x, explodeNone, labelsNone, colorsNone, autopctNone, startangleNone, shadowFalse) 其中&#xff0c;参数含义如下&#xff1a; - x: 数组&#xff0c;表示饼图中每个部分的数值大小。 -…

手机技巧:iOS微信 8.0.38正式版更新功能一览

目录 1、安装包变大了很多 2、拍摄功能优化 3、订阅号消息展示优化 4、转账界面优化 5、视频号关注展开更多 7、朋友圈置顶&#xff08;灰度测试&#xff09; 8、搜一搜页面新增问一问功能 2023.06.09大家期待已久的IOS微信8.0.38正式版终于发布了&#xff0c;今天就来给…

第四章网络层

1.网络层概述 网络层的主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间的传输。 要实现网络层任务&#xff0c;需要解决以下主要问题: 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)网络层寻址问题路由选择问题 因特网(Internet)是目前全世界用…

idea快捷键和常用设置和maven

因为Eclipse快捷键较为统一&#xff0c;因此我们提前设置好&#xff0c;统一idea中的快捷键遵从Eclipse的快捷键。 常用设置 快捷键的统一 设置–按键映射–Eclipse 自动导包 设置–编辑器–常规–自动导入 这个操作主要是为了正确导包&#xff0c;当我们将某行代码注释的…

【物联网无线通信技术】LoRa从理论到实现(SX1268)

文章先从LoRa的物联网通信技术前辈们讲起&#xff0c;慢慢引出了这种功耗又低&#xff0c;距离又远的无线通信技术&#xff0c;然后又似庖丁解牛一般&#xff0c;从物理层到链路层&#xff0c;详细的介绍了LoRa这种技术的组成&#xff0c;最后以一种实际的原理与嵌入式软件实现…

MySQL实战解析底层---如何正确地显示随机消息

目录 前言 内存临时表 磁盘临时表 随机排序方法 前言 现在说说MySQL中的另外一种排序需求&#xff0c;希望能够加深对MySQL排序逻辑的理解从一个单词表中随机选出三个单词这个表的建表语句和初始数据的命令如下&#xff1a; 为了便于量化说明&#xff0c;在这个表里面插入…

ChatGPT科研阅读论文应用插件(txyz.ai)使用初探

前言 ChatGPT没有办法直接阅读论文&#xff0c;但使用txyz.ai插件可以使用ChatGPT来帮助快速得到论文中想要的信息&#xff0c;特别是对于专业名词较多的文章&#xff0c;而且可以问它关于这篇文章的问题&#xff0c;能够加快研究的进程。刚开始了解到这个应用是一个ChatGPT插件…

06- c语言指针 (C语言)

一 指针的引入 1、一般把内存中的一个字节称为一个内存单元。 2、为了正确地访问这些内存单元&#xff0c;必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址&#xff0c;通常也把这个地址称为指针。 3、如果在程序中定义…

设计模式之策略模式笔记

设计模式之策略模式笔记 说明Strategy(策略)目录策略模式示例类图抽象策略类策略A类策略B类策略C类促销员类测试类 说明 记录下学习设计模式-策略模式的写法。JDK使用版本为1.8版本。 Strategy(策略) 意图:定义一系列的算法&#xff0c;把它们一个个封装起来&#xff0c;并且…

【数据分享】全国县市2000-2021年综合经济数据(地区生产总值\一二三产业增加值等)

《中国县域统计年鉴》是一部全面反映我国县域社会经济发展状况的资料性年鉴&#xff0c;收录了上一年度全国2000多个县域单位的基本情况、综合经济、农业、工业、教育、卫生、社会保障等方面的资料。 本篇文章我们给大家带来从2001年—2022年《中国县域统计年鉴》整理的数据—…

MySQL:事务

事务 在介绍事务之前&#xff0c;我们先来了解一个案例&#xff1a; 在一个买票的软件中&#xff0c;当客户端A检查还有一张票时&#xff0c;将票卖点&#xff0c;但是还没有更新数据库&#xff0c;客户端B检查了票数&#xff0c;发现大于0&#xff0c;于是又卖掉了一张票。然…

ROS:通信机制

目录 一、通信机制简介二、话题通信机制2.1话题通信简介2.2话题通信实操&#xff08;C&#xff09;2.2.1分析2.2.2发布方代码2.2.3订阅方代码2.2.4配置CMakeLists.txt2.2.5执行2.2.6注意 2.3话题通信实操&#xff08;python&#xff09;2.3.1分析2.3.2发布方代码2.3.3订阅方代码…

【计算机网络】第二章 物理层(上)

文章目录 2.1 物理层的基本概念2.2 物理层下面的传输媒体2.3 传输方式2.4 编码与调制2.4.1 介绍2.4.2 常用编码2.4.3 编码习题2.4.4 基本调制方法2.4.5 混合调制 2.1 物理层的基本概念 物理层考虑的是怎样在连接各种计算机的传输媒体上传输数据比特流。 物理层为数据链路层屏蔽…

4.0、Java_IO流 - 流的概念细分

4.0、Java_IO流 - 流的概念细分 按照流的方向分类&#xff1a; 输入流&#xff1a;数据流从数据源到程序&#xff08;以 InputStream 、Reader 结尾的流&#xff09;&#xff1b; 输出流&#xff1a;数据流从程序到目的地&#xff08;以 OutputStream 、Writer 结尾的流&#x…

【雕爷学编程】Arduino动手做(120)---游戏摇杆扩展板

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

2023-06-23:redis中什么是缓存击穿?该如何解决?

2023-06-23&#xff1a;redis中什么是缓存击穿&#xff1f;该如何解决&#xff1f; 答案2023-06-23&#xff1a; 缓存击穿是指一个缓存中的热点数据非常频繁地被大量并发请求访问&#xff0c;当该热点数据失效的瞬间&#xff0c;持续的大并发请求无法通过缓存获取到数据&…

Triton教程 --- Triton 响应缓存

Triton教程 — Triton 响应缓存 Triton系列教程: 快速开始利用Triton部署你自己的模型Triton架构模型仓库存储代理模型设置优化动态批处理速率限制器模型管理自定义算子解耦后端和模型 概述 在本文档中&#xff0c;推理请求是模型名称、模型版本和输入张量&#xff08;名称、…

ChatGPT从入门到精通,深入认识ChatGPT

ChatGPT从入门到精通&#xff0c;一站式掌握办公自动化/爬虫/数据分析和可视化图表制作 全面AI时代就在转角 道路已经铺好了 “局外人”or“先行者” 就在此刻 等你决定1、ChatGPT从入门到精通&#xff0c;一站式掌握办公自动化/爬虫/数据分析和可视( 点击观看完整版本 )https…