使用 Logback.xml 配置文件输出日志信息

官方链接:Chapter 3: Configurationicon-default.png?t=N7T8https://logback.qos.ch/manual/configuration.html

配置使用 logback 的方式有很多种,而使用配置文件是较为简单的一种方式,下述就是简单描述一个 logback 配置文件基本的配置项:

由于 logback 会自动检索程序的类路径下是否有 logback-test.xml 或 logback.xml 来进行相关配置,因此我们首先需要在类路径下创建一个文件,命名为 logback-test.xml 或 logback.xml。例如:logback-examples/src/main/resources/logback.xml.

在 logback 配置文件中:

该文件首先使用 <configuration> 来组织本配置文件的基本结构,其中可以包含零到多个的 <appender> 标签,零到多个 <logger> 标签,至多一个 <root> 标签:

1)<appender>:配置日志的输出形式。该标签采用两个必需属性:name 和 class。

name:指定 appender 的名称;

class:指定要实例化的 appender 类的完全限定名称。

<appender> 内可以使用多种标签,基本用法如下:

1. 如果是使用文件来输出日志,使用<file>指定日志文件路径

2. 使用 <encoder> 来定义日志格式( 代替了旧版本的 <layout> ,但是新版本中仍然支持<layout> )。内部使用<pattern>定义具体格式( <layout> 也是 )

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>myApp.log</file>

    <encoder>
      <pattern>%date %level [%thread] %logger{10} [%file:%line] -%kvp- %msg%n</pattern>
    </encoder>
  </appender>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%kvp %msg%n</pattern>
    </encoder>
  </appender>

2)<root>:日志根配置,也即是除了 <logger> 定义外的日志都使用该标签的配置。

该标签只有一个属性 level:配置日志级别,可选值有:TRACE、DEBUG、INFO、WARN、ERROR、ALL 或 OFF。

其中也可以包含零到多个 <appender-ref> 来引用前面定义的 <appender> ,指定当前该配置的日志需要以哪种 <appender> 来输出。

<configuration>

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

</configuration>

3)<logger>:用来定义特殊的日志配置。例如一个应用程序中所有日志都统一配置,但是存在少数的类或者文件需要特殊配置,就使用该标签来配置。该标签只接受一个必需的 name 属性、一个可选的 level 属性和一个可选的可加性属性( 一般不需要使用 )。

name:指定在哪个类或者文件中使用该配置,也即是作用域;

level:配置日志级别,可选值有:TRACE、DEBUG、INFO、WARN、ERROR、ALL 或 OFF。

<logger> 标签内还可以包含零到多个 <appender-ref> 来引用前面定义的 <appender> ,指定当前该配置的日志需要以哪种 <appender> 来输出。如果是零个,则为继承 <root> 中的定义。

<logger name="com.example.Test1" level="DEBUG" />

<logger name="com.example.Test2" level="DEBUG">
  <appender-ref ref="STDOUT" />
</logger>

示例:定义一个具体滚动日志文件功能的 appender:RollingFileAppender,来收集每天的日志到一个日期命名的日志文件中,并定义日志文件定期进行清理,例如30天:

<configuration>
    <springProperty scope="context" name="logDir" source="logging.file.path"/>
    <springProperty scope="context" name="springAppName" source="spring.application.name"/>

    <appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/server.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] [${springAppName}, %X{X-B3-TraceId:-}] %-5level %logger{36}.%M - %msg%n</Pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/server_%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <totalSizeCap>100MB</totalSizeCap>
        </rollingPolicy>
    </appender>

    <root level="info">
        <appender-ref ref="LOGFILE" />
    </root>
</configuration>

file:先将日志文件路径定义为 ${logDir}/server.log

encoder:定义日志输出格式

rollingPolicy :在标签内部定义滚动策略,具体如下:

1)fileNamePattern:指定滚动的日志文件命名为当天日期,也即是当日期发生变化的时候,就滚动产生一个新的日志文件,因此就是每天都产生一个新的日志文件。 此处的工作原理是:先将日志信息输入到 <file> 标签定义的文件中,此处简称为 server.log,等到滚动条件生效( 此处也即是日期发生变化 ),就将 server.log 重命名为 <fileNamePattern> 中定义的命名格式的日志文件( 此处为 server_%d{yyyy-MM-dd}.log )进行存储,然后重新创建一个名为 server.log 的日志文件继续收集新的日志,重复这样的操作。

也即是:每当日期发生变化,即新的一天开始时,就会触发滚动,将旧的日志文件重命名(添加日期前缀),然后,会创建一个新的 server.log 文件来继续收集新的日志信息。

2)maxHistory:指定了保留日志文件的天数,这里设置为 30 天

3)totalSizeCap:定义了所有日志文件的总大小上限,这里设置为 100MB。达到这个大小后,最旧的日志文件将被删除

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

优化 mac 储存空间的方法 只需一招为你的苹果电脑提速

在职场中&#xff0c;许多人都对苹果电脑情有独钟。苹果电脑以其简洁美观的设计、流畅稳定的性能以及出色的用户体验&#xff0c;成为了众多职场人士的得力助手。无论是处理文档、制作演示文稿&#xff0c;还是进行创意设计等工作&#xff0c;苹果电脑都能展现出其独特的优势&a…

HCIP-Datacom-ARST自选题库__多种协议简答【11道题】

1.BGP/MPLSIP VPN的典型组网场景如图所示&#xff0c;PE1和PE2通过LoopbackO建立MP-IBGP&#xff0c;PE1和PE2之间只传递VPN路由&#xff0c;其中PE1BGP进程的部分配置已在图中标出&#xff0c;则编号为0的命令不是必须的。(填写阿拉伯数字) 3 2.在如图所示的Hub&amp;Spok…

蒙层(css)

如何在 Vue 中实现一个包含图像和蒙层效果的组件&#xff1f;这个组件根据某个条件显示或隐藏蒙层&#xff0c;用于表示图像是否已读。 1. 创建基础模板 首先&#xff0c;我们在模板中使用 div 包裹我们的图像组件 GraphImage&#xff0c;并为最外层 div 设置 position: relat…

OTTO、亚马逊、Temu卖家如何运用测评补单来提高购买率?

在跨境电商的广阔舞台上&#xff0c;测评补单无疑是一股不可或缺的强劲动力。商家们深知&#xff0c;通过补单这一手段&#xff0c;能够快速为产品注入活力&#xff0c;使销量迅猛攀升&#xff0c;评论如潮涌至&#xff0c;进而在激烈的竞争中脱颖而出&#xff0c;勇攀销量之巅…

【Python数据预处理系列】Pandas 数据操作实战:掌握 .loc[] 方法进行高效数据选取

文章将详细介绍.loc[]方法的各种使用场景&#xff0c;帮助读者深入理解并掌握这一核心功能。 在Pandas库中&#xff0c;.loc[]方法是一种强大而灵活的数据选取工具。本文将通过详细的步骤和示例&#xff0c;手把手教您如何利用这一工具进行高效的数据操作。 首先&#xff0c;我…

【数据集划分】假如你有超百万条oracle数据库数据(成真版)

【数据集划分】假如你有接近百万条oracle数据库数据&#xff08;成真版&#xff09; 写在最前面小结 数据集划分原因注意事项 1. 留出法&#xff08;Hold-out Method&#xff09;原理算法复杂度代码示例Scikit-learn的train_test_split分布式计算框架&#xff08;如Apache Spar…

信不信,马上教会你Purple Pi OH开发板之ADB常用命令

开源鸿蒙硬件方案领跑者 触觉智能 本文适用于在Purple Pi OH开发板进行分区镜像烧录。触觉智能的Purple Pi OH鸿蒙开源主板&#xff0c;是华为Laval官方社区主荐的一款鸿蒙开发主板。 该主板主要针对学生党&#xff0c;极客&#xff0c;工程师&#xff0c;极大降低了开源鸿蒙开…

【保姆级讲解Outlook邮箱的使用技巧】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

代码随想录第25天|回溯part5 通用的去重法:set

491.非递减子序列 中等题 这个题给出的实例很有陷阱性&#xff0c;之前的题是通过排序来对于相同树层的元素去重&#xff0c;而本题是求非递减子序列&#xff0c;如果排序了那就已经是自增子序列了&#xff0c;达不到题目的要求。 看图 可以看出&#xff0c;对于一个集合[4,…

超实用的新闻稿撰写模板分享,纯干货

一篇优秀的新闻稿&#xff0c;能为企业带来良好的口碑和传播效果。本文伯乐网络传媒将深入探讨新闻稿撰写前的准备工作&#xff0c;并提供一套实用的新闻稿结构模板&#xff0c;助你轻松打造高质量新闻稿。 一、新闻稿撰写前的准备 1. 明确新闻稿的主题和目的 在动笔之前&…

免费开源图片转文字识别软件:Umi-OCR

目录 1.介绍 2.项目亮点 3.项目功能&#xff08;已实现&#xff09; 4.功能体验 5.项目集成&#xff08;调用接口&#xff09; 6.项目地址 1.介绍 Umi-OCR&#xff1a;免费&#xff0c;开源&#xff0c;可批量的离线OCR软件&#xff0c;目前适用于 Windows7 x64 及以上。…

Unity开发Cosmos使用BNG Framework获取按键信息

Unity开发Cosmos使用BNG Framework获取按键信息 1、新建一个脚本&#xff0c;复制下面代码 using BNG;[Header("Input")]//[Tooltip("The key(s) to use to toggle locomotion type")]public List<ControllerBinding> locomotionToggleInput new …

Tomcat相关概述和部署

目录 一、Tomcat知识 1.Tomcat概述 2.Tomcat组件构成 3.Tomcat 功能组件结构 4.Tomcat的请求过程 二、tomcat服务部署 1.老样子准备工作——关闭防火墙和selinux&#xff0c;防止其对安装过程的干扰 2.将准备好的软件包拖入/opt目录下&#xff0c;进行安装JDK 3.设置J…

鬼畜恶搞类型的视频素材哪里找?热门搞笑素材网站分享

在当今数字媒体时代&#xff0c;寻找优质的视频素材变得尤为重要&#xff0c;尤其是对于喜欢鬼畜恶搞风格的创作者来说&#xff0c;选择合适的素材网站可以大大提升视频的吸引力和观看体验。本文将为短视频创作者和自媒体运营者介绍一些顶级的视频素材网站和工具&#xff0c;特…

C++基础编程100题-004 OpenJudge-1.1-06 空格分隔输出

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0101/06/ 描述 读入一个字符&#xff0c;一个整数&#xff0c;一个单精度浮点数&#xff0c;一个双精度浮点数&#xff0c;然后按顺序输出它们&#xff0c;并且要求在他们之间用一个空格分隔。输出浮点数时保留…

短视频系列内容生产技能提升 沈阳短视频剪辑培训

优势&#xff1a;一、短视频系列化内容的优势 ①可持续性强 某一条视频效果很好(几十万点赞)时&#xff0c;按照相同格式继续输出非常容易成功: √不需要设计脚本&#xff1b; √不需要重新定制。 √稳定性强&#xff0c; ②节约时间成本和制作成本 举例对标账号&#xf…

Ollama+FastAPI+React手把手构建自己的本地大模型,支持SSE

最近大家都在玩LLM&#xff0c;我也凑了热闹&#xff0c;简单实现了一个本地LLM应用&#xff0c;分享给大家&#xff0c;百分百可以用哦&#xff5e;^ - ^ 先介绍下我使用的三种工具&#xff1a; Ollama&#xff1a;一个免费的开源框架&#xff0c;可以让大模型很容易的运行在…

【Postman接口测试】第五节.Postman接口测试项目实战(下)

文章目录 前言七、课程添加接口postman测试 7.1 课程添加接口文档 7.2 针对课程添加设计接口测试用例 7.2.1 提取测试点 7.2.2 设计测试用例 7.2.2 使用Postman进行接口测试八、查询课程列表接口postman测试 8.1 查询…

插件:Plugins

一、安装网格插件

Allegro器件角度倾斜如何回正?

Allegro器件角度倾斜,坐标含有小数点调整为45度整数倍的方法 Allegro器件角度倾斜回正的方法。 在用Allero进行PCB设计过程中,有时候由于误操作;或者刚开始器件需要非45度整数倍的角度,后又需要调整为整数倍的角度。器件角度倾斜含有小数点调整为45度整数倍的方法。 1、如…