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

使用 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。达到这个大小后,最旧的日志文件将被删除

相关文章:

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

官方链接&#xff1a;Chapter 3: Configurationhttps://logback.qos.ch/manual/configuration.html 配置使用 logback 的方式有很多种&#xff0c;而使用配置文件是较为简单的一种方式&#xff0c;下述就是简单描述一个 logback 配置文件基本的配置项&#xff1a; 由于 logba…...

Allegro-开店指南

开店指南 Allegro企业账户注册流程 Allegro注册流程分成两个主要阶段: 第一创建您的账户&#xff0c;第二激活您账户的销售功能。完成两个阶段&#xff0c;才能在Allegro进行销售。 中国企业应该入驻Business account&#xff08;企业账户&#xff09;。 第二阶段&#xff…...

Spring AI 第二讲 之 Chat Model API 第二节Ollama Chat

通过 Ollama&#xff0c;您可以在本地运行各种大型语言模型 (LLM)&#xff0c;并从中生成文本。Spring AI 通过 OllamaChatModel 支持 Ollama 文本生成。 先决条件 首先需要在本地计算机上运行 Ollama。请参阅官方 Ollama 项目 README&#xff0c;开始在本地计算机上运行模型…...

服务器环境搭建

服务器的使用。 本地服务器 虚拟机服务器 云服务器。 服务器配置内容 如何实现部署到云服务器&#xff1f; 环境部署是一件费劲的事。 自己一个人坚持慢慢弄&#xff0c;也能行。 但是要是一个组的人&#xff0c;问你怎么弄环境。 可就难了&#xff0c;不同的人部署的环境不同&…...

数仓建模—指标体系指标拆解和选取

数仓建模—指标拆解和选取 第一节指标体系初识介绍了什么是指标体系 第二节指标体系分类分级和评价管理介绍了指标体系管理相关的,也就是指标体系的分级分类 这一节我们看一下指标体系的拆解和指标选取,这里我们先说指标选取,其实在整个企业的数字化建设过程中我们其实最…...

微信小程序如何在公共组件中改变某一个页面的属性值

需求 公共组件A改变页面B的属性isShow的值。 思路 首先目前我不了解可以直接在组件中改变页面的值的方法&#xff0c;所以我通过监听的方式在B页面监听app.js的某一属性值的改变从而改变B页面的值&#xff0c;众所周知app.js的某一属性值是很容易就能更改的。 app.js globa…...

TCP/UDP的区别

首先来介绍一下什么是TCP和UDP TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;是互联网协议套件中两个重要的传输层协议。它们在数据传输的方式、可靠性、连接性等方面有显著的区别。 总之他们两个就是个协议&#xff0c;协议也就是数…...

JavaWeb1 Json+BOM+DOM+事件监听

JS对象-Json //Json 字符串转JS对象 var jsObject Json.parse(userStr); //JS对象转JSON字符串 var jsonStr JSON.stringify(jsObject);JS对象-BOM BOM是浏览器对象模型&#xff0c;允许JS与浏览器对话 它包括5个对象&#xff1a;window、document、navigator、screen、hi…...

DSP6657 GPIO中断学习(只支持GPIO0-15)

1 简介 使用创龙板卡的KEY2按键通过中断的方式控制LED3的亮灭 2 中断学习 在C665x设备上&#xff0c;CPU中断是通过C66x CorePac中断控制器进行配置的。该中断控制器允许最多128个系统事件被编程到任意12个CPU可屏蔽中断输入&#xff08;CPUINT4至CPUINT15&#xff09;、CPU…...

vue数字翻盘,翻转效果

数字翻转的效果 实现数字翻转的效果上面为出来的样子 下面为代码&#xff0c;使用的时候直接引入&#xff0c;还有就是把图片的路径自己换成自己或者先用颜色替代&#xff0c;传入num和numlength即可 <template><div v-for"(item, index) in processedNums&quo…...

【简单讲解TalkingData的数据统计】

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

JMeter的基本使用

JMeter的基本使用三步骤&#xff1a;1.添加线程、2.添加请求、3.添加查询结果的内容 如果需要添加token请求头来验证&#xff0c;则需要再加上一步骤&#xff1a;添加请求头 1.线程 添加线程的方式 主要修改者三个属性值 Number of Threads&#xff1a;并发线程数 Ramp-up…...

Oracle和Random Oracle

Oracle和Random Oracle 在计算机理论里面经常可以看到oracle&#xff0c;这个oracle可以是一个程序 一片代码 一个算法 一个机器 也可以是一个函数 甚至是一个关系。但我们只能知道这个oracle能做什么&#xff0c;不清楚他是怎么做的。所以经常讲其称为黑箱。推广一点&#xf…...

word 无法自动检测拼写

word 有时候不能分辨是哪种语言,比如把英语错认为法语 。 例如&#xff1a;Interlaayer spacace,发现误认为是法语。 1、选中Interlaayer spacace 2、点击语言下拉按钮 选择设置校对语言 发现校对语言为法语 3、手动修改校对语言为英语&#xff0c;并点击确认。 4、发现现…...

docker和docker-compose的安装

docker的安装 1.安装 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun2.设置开机自启动 systemctl start docker #启动docker systemctl enable docker3.配置阿里云镜像 不配置镜像的话&#xff0c;进行 docker pull 等操作会比较慢。进入阿里云&…...

python的一种集成开发工具:PyCharm开发工具

一. 简介 本文简单了解两种 python语言所使用的 集成开发环境&#xff1a; PyCharm、vscode。 python语言学习中&#xff0c;可以任意选中这两个集成开发环境的一种就可以。本文先来简单学习 PyCharm开发工具安装与使用。 二. python的一种集成开发工具&#xff1a;PyChar…...

【匹配线段问题】

问题&#xff1a; 如下图所示。图中有两行正整数&#xff0c;每行中有若干个正整数。如果第一行的某个数r与第二行的某个数相同&#xff0c;这样就可以在这两个正整数之间划一条线&#xff0c;并称之为r-匹配线段。下图中存在3-匹配线段和2-匹配线段。 请编写完整程序&#xf…...

vue中$bus.$emit和$bus.$on的用法温故

$bus. $emit、 $bus. $on 用于非父子组件之间通信 1、在main.js中注册 Vue.prototype.$bus new Vue();new Vue({render: h > h(App),router,store }).$mount(#app)2、在需要发送信息的组件中&#xff0c;发送事件 this.$bus.$emit("method",params)&#xff1b…...

【JavaScript脚本宇宙】优化你的React项目:探索表单库的世界

React表单库解析&#xff1a;特性&#xff0c;使用方法和使用场景 前言 在现代的web开发中&#xff0c;表单是Web应用程序的核心组成部分之一。为了助力开发者更快捷、高效地处理表单状态和验证等问题&#xff0c;本文将介绍六种不同的React表单库&#xff0c;包括它们的特性…...

kvm虚拟化

虚拟化是一种资源管理技术&#xff0c;是将计算机的各种资源&#xff0c;如服务器&#xff0c;网络&#xff0c;内存及存储等&#xff0c;以抽象&#xff0c;转换后呈现出来&#xff0c;打破物理设备结构见的不可切割的障碍&#xff0c;使用户可以比原来的架构更好的方式来应用…...

开源多人游戏解决方案:Nucleus Co-op让单机游戏秒变多人派对

开源多人游戏解决方案&#xff1a;Nucleus Co-op让单机游戏秒变多人派对 【免费下载链接】splitscreenme-nucleus Nucleus Co-op is an application that starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirro…...

如何用快马平台与jdk1.8特性十分钟搭建商品管理系统原型

今天想和大家分享一个快速搭建商品管理系统原型的经验。作为一个经常需要验证业务逻辑的后端开发&#xff0c;我发现用jdk1.8配合InsCode(快马)平台可以十分钟内完成从零到可运行的原型开发&#xff0c;特别适合敏捷开发场景。 为什么选择jdk1.8 企业级开发中jdk1.8仍然是主流选…...

WiseFlow部署避坑指南:从Docker到PowerShell权限问题的完整解决方案

WiseFlow部署实战手册&#xff1a;从零到一的系统化避坑指南 引言 当你第一次接触WiseFlow这个开源项目时&#xff0c;可能会被它强大的功能所吸引——从自动化任务处理到智能数据分析&#xff0c;这个工具正在改变许多开发者的工作方式。然而&#xff0c;就像大多数技术栈的初…...

Rustup终极指南:轻松管理你的Rust开发环境

Rustup终极指南&#xff1a;轻松管理你的Rust开发环境 【免费下载链接】rustup The Rust toolchain installer 项目地址: https://gitcode.com/gh_mirrors/ru/rustup 你是否曾经为管理多个Rust版本而烦恼&#xff1f;或者在不同项目间切换工具链时感到困惑&#xff1f;R…...

语音转文字神器!Speech Seaco Paraformer WebUI详细使用指南

语音转文字神器&#xff01;Speech Seaco Paraformer WebUI详细使用指南 1. 为什么你需要这个语音识别工具 在日常工作和学习中&#xff0c;我们经常遇到需要将语音内容转换为文字的场景。无论是会议记录、采访整理&#xff0c;还是视频字幕制作&#xff0c;传统的手动听写方…...

8GB显存跑大模型?Qwen3-0.6B-FP8部署与效果实测全记录

8GB显存跑大模型&#xff1f;Qwen3-0.6B-FP8部署与效果实测全记录 1. 引言&#xff1a;轻量级大模型的新选择 在AI模型日益庞大的今天&#xff0c;如何在有限硬件资源上运行高效的大语言模型成为开发者关注的焦点。Qwen3-0.6B-FP8作为阿里达摩院最新推出的轻量级模型&#xff0…...

AI股票分析师daily_stock_analysis进阶技巧:定制你的专属分析模板

AI股票分析师daily_stock_analysis进阶技巧&#xff1a;定制你的专属分析模板 1. 为什么需要定制分析模板 当你第一次使用AI股票分析师daily_stock_analysis时&#xff0c;可能会被它开箱即用的分析能力所惊艳。但随着使用深入&#xff0c;你会发现通用模板有时无法完全满足你…...

SEO 优化人员如何编写优化报告并向上级汇报_SEO 优化人员如何制定长期的 SEO 优化计划

SEO 优化人员如何编写优化报告并向上级汇报 在当前数字化经济的快速发展中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已成为企业提升网站流量和品牌知名度的重要手段。作为SEO优化人员&#xff0c;我们不仅需要制定有效的SEO优化策略&#xff0c;还要能够精准地编写…...

OpenClaw+千问3.5-9B学习助手:自动整理技术笔记与生成测验题

OpenClaw千问3.5-9B学习助手&#xff1a;自动整理技术笔记与生成测验题 1. 为什么需要AI学习助手&#xff1f; 去年准备技术认证考试时&#xff0c;我发现自己浪费了大量时间在重复性劳动上&#xff1a;从不同网页复制代码示例、手动整理命令速查表、为每个知识点编写测验题。…...

网站SEO优化是否需要长期维护

网站SEO优化是否需要长期维护 在当前竞争激烈的互联网环境中&#xff0c;网站的SEO优化已经成为每个企业和个人网站的重要策略之一。许多人在初期投入后&#xff0c;常常会有一个疑问&#xff0c;那就是“网站SEO优化是否需要长期维护&#xff1f;”本文将从问题分析、原因说明…...