认识LogBack.xml

一、logback的三个主要模块

        1.logback-core:提供基本的日志功能;

        2.logback-classic:建立在logback-core之上,兼容SLF4和log4jAPI,提供一套强大的日志框架;

        3.logback-access:允许通过servlet容器的访问日志功能来记录HTTP请求。

二、优点

        1.性能高:被设计为高性能日志框架,有较低的运行是开销,异步日志记录和可配置的缓冲机制有助于提高性能;

        2.灵活配置:采用xml格式,允许声明式配置日志输出;

        3.丰富的appender;

        4.API简单而强大;

        5.广泛的社区支持。

三、配置文件的基本结构

四、xml配置文件完整示例

        1.同步配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 日志存放路径 --><property name="log.path" value="/data/xjdoc/logs" /><!-- 日志输出格式 --><property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${log.pattern}</pattern></encoder></appender><!-- 系统日志输出 --><appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-info.log</file><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 日志最大的历史 60天 --><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤的级别 --><level>INFO</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender><appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-error.log</file><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 日志最大的历史 60天 --><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤的级别 --><level>ERROR</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender><!-- 系统模块日志级别控制  --><logger name="cn.xj" level="info" /><!-- Spring日志级别控制  --><logger name="org.springframework" level="warn" /><!--系统操作日志--><root level="info"><appender-ref ref="console" /><appender-ref ref="file_info" /><appender-ref ref="file_error" /></root></configuration> 

        2.异步配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 日志存放路径 --><property name="log.path" value="/data/xjdoc/logs" /><!-- 日志输出格式 --><property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${log.pattern}</pattern></encoder></appender><!-- 系统日志输出 --><appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-info.log</file><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 日志最大的历史 60天 --><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤的级别 --><level>INFO</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender><appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-error.log</file><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 日志最大的历史 60天 --><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤的级别 --><level>ERROR</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender><appender name="async_file_info" class="ch.qos.logback.classic.AsyncAppender"><!--  当队列的剩余容量小于这个阈值并且当前日志level为 TRACE, DEBUG or INFO ,则丢弃这些日志。  --><discardingThreshold>0</discardingThreshold><!--  更改默认的队列的深度,该值会影响性能.默认值为256  --><queueSize>1024</queueSize><!--  新增这行为了打印栈堆信息  --><includeCallerData>true</includeCallerData><!--  添加附加的appender,最多只能添加一个  --><appender-ref ref="file_info"/></appender><appender name="async_file_error" class="ch.qos.logback.classic.AsyncAppender"><!--  当队列的剩余容量小于这个阈值并且当前日志level为 TRACE, DEBUG or INFO ,则丢弃这些日志。  --><discardingThreshold>0</discardingThreshold><!--  更改默认的队列的深度,该值会影响性能.默认值为256  --><queueSize>1024</queueSize><!--  新增这行为了打印栈堆信息  --><includeCallerData>true</includeCallerData><!--  添加附加的appender,最多只能添加一个  --><appender-ref ref="file_error"/></appender><appender name="async_file_debug" class="ch.qos.logback.classic.AsyncAppender"><!--  当队列的剩余容量小于这个阈值并且当前日志level为 TRACE, DEBUG or INFO ,则丢弃这些日志。  --><discardingThreshold>0</discardingThreshold><!--  更改默认的队列的深度,该值会影响性能.默认值为256  --><queueSize>1024</queueSize><!--  新增这行为了打印栈堆信息  --><includeCallerData>true</includeCallerData><!--  添加附加的appender,最多只能添加一个  --><appender-ref ref="file_debug"/></appender><!-- 系统模块日志级别控制  --><logger name="cn.xj" level="info" /><!-- Spring日志级别控制  --><logger name="org.springframework" level="warn" /><!--系统操作日志--><root level="info"><appender-ref ref="console" /><appender-ref ref="async_file_info" /><appender-ref ref="async_file_error" /></root></configuration> 

五、xml配置详解

        1.property

<!-- 日志存放路径 --><property name="log.path" value="/data/game/logs" /><!-- 日志输出格式 --><property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

        log.path:定义了一个名为log.path的属性,值为/data/game/logs。这个属性可以在配置文件的其他地方通过${log.path}进行引用。这种属性一般用于用于同一管理日志的存放路径,方便修改。

        log.pattern:这个属性可以在也可以用上述方法在别处引用,同一管理日志的输出格式,方便修改。

        · %d{HH:mm:ss.SSS}:输出日志的时间戳,精确到毫秒;

转换模式

结果示例

%d

2024-6-22 16:58:59,812

%date

2024-6-22 16:58:59,812

%date{ISO8601}

2024-6-22 16:58:59,812

%date{HH:mm:ss.SSS}

16:58:59,812

%d{HH:mm:ss.SSS}

16:58:59,812

%date{dd MMM yyyy;HH:mm:ss.SSS}

22 jun.2024;16:58:59,812

        · [%thread]:输出线程名;

        · %-5level:输出日志级别,左对齐占5个字符宽度;

        · %logger{20}:输出logger名称,占20个字符的宽度;

        · [%method,%line]:输出调用方法和行号;

        · %msg:输出日志消息;

        · %n:输出平台特定的换行符。

        2.appender

<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-info.log</file><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 日志最大的历史 60天 --><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤的级别 --><level>INFO</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender>

        ConsoleAppender(控制台输出):class="ch.qos.logback.ConsoleAppender"

用于将日志输出到控制台,主要用于开发金额调试时观察日志。

        FileAppender(文件输出):class="ch.qos.logback.core.FileAppender"

用于将日志输出到文件,可以配置文件路径、文件名等参数。

        RollingFileAppender(滚动文件输出):class="ch.qos.logback.core.RollingFileAppender"

在FileAppender的基础上支持滚动策略,可以按照一定的规则滚动创建日志文件,例如:按照时间没一天或一个小时将日志输出成文件,并定义文件名为输出时间。

        AsyncAppender(异步输出):class="ch.qos.logback.core.AsyncAppender"

用于异步输出日志,可以提高性能,特别适用于高吞吐的应用,包装其他Appender,将日志记录过程一步执行。

        滚动策略( 元素)

        · TimeBasedRollingPolicy (基于时间的滚动策略):按照一定时间间隔滚动创建新的日志文件,fileNamePattern属性定义了日志文件名的格式,可以包含时间相关的占位符,例如:%d{yyyy-MM-dd}。

        · SizeAndTimeBasedRollingPolicy(基于时间和大小的滚动策略):同时基于时间和文件大小的滚动策略,既可以按照时间滚动,又可以在文件达到一定大小时滚动创建新的日志文件。里面永阳可以使用fileNamePattern来定义文件名。maxFileSize属性定义了每个日志文件的最大大小。

        · FixedWindowRollingPolicy(固定窗口的滚动策略):固定窗口的滚动策略,按照一定的窗口大小滚动创建新的日志文件。

        · SizeBasedTriggeringPolicy(基于大小触发滚动策略):基于文件的大小触发滚动的策略,当当前文件大小达到一定的阈值是触发滚动。

        · TimeBasedFileNamingAndTriggeringPolicy(基于时间的文件命名和触发策略):按照一定的时间间隔和文件名格式触发滚动。

        <encoder>元素:用于配置日志的输出格式,${log.pattern}引用了之前定义的属性。

        <filter>元素:

        · 使用ch.qos.logback.classic.filter.LevelFilter过滤器,仅接受INFO级别的日志记录;

        · onMatch指定匹配时的操作为接受(ACCEPT);

        · onMismatch指定不匹配时的操作为拒绝(DENY)。

        3.logger

    <!-- 系统模块日志级别控制  --><logger name="cn.xj" level="info" /><!-- Spring日志级别控制  --><logger name="org.springframework" level="warn" />

        name属性:通常使用类名或者报名来指定Logger;

        level属性:定义日志级别,标配是记录的日志消息级别。可选值包括:

        · TRACE(追踪):最低级别的日志,用于记录程序的详细执行信息,日志量较大,一般不用;

        · DEBUG(调试):用于输出调试信息,有助于定位问题,包含详细的变量信息和方法调用堆栈等;

        · INFO(信息):用于记录一般性的信息,表示程序执行的正常流程。显示重要的运行时信息,通常用于生产环境,没有明确指出日志等级时,默认是INFO级别;

        · WARN(警告):用于记录一些可能需要关注的问题,但不会导致程序失败,表示程序遇到了默写问题和潜在的错误,但是仍然可以执行;

        · ERROR(错误):用于记录程序的错误和异常情况。

        4.root

    <root level="info"><appender-ref ref="console" /><appender-ref ref="async_file_info" /><appender-ref ref="async_file_error" /></root>

        level属性:定义了根Logger的默认日志级别,表示整个日志系统的最低输出级别;

        <appender-ref>元素:用于引用一个或多个Appender,将其关联到根Logger,即设置根Logger的输出目的地。可以有多个该元素,表示输出到多个目的地。

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

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

相关文章

防封防红短链接系统

功能很强大的一款防封防红短链接系统 功能列表&#xff1a; 1、支持设置套餐&#xff0c;选择不同的功能的集合作为套餐的功能&#xff0c;可设置包年包月 2、强大的短链接数据统计功能&#xff0c;包括统计点击次数、国家分布情况、浏览器分布情况、语言分布情况等 3、支持…

GWO-CNN-SVM,基于GWO灰狼优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)

GWO-CNN-SVM&#xff0c;基于GWO灰狼优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类) 1. GWO灰狼优化算法 灰狼优化算法&#xff08;Grey Wolf Optimizer, GWO&#xff09;是一种启发式优化算法&#xff0c;模拟了灰狼群体的社会行为&#xff0c;包…

哈夫曼树及其应用

目录 一、哈夫曼树 1.1基本概念 1.2构造方法 1.3构造算法的实现 二、哈夫曼树的应用 2.1哈夫曼编码 2.2文件的编码和解码 2.2.1编码 2.2.2解码 一、哈夫曼树 1.1基本概念 哈夫曼树又称为最优树&#xff0c;是一类带权路径长度最短的树。 最优二叉树&#xff1a;带权…

vue3-openlayers 点击多边形弹框,高亮多边形,自定义属性传递,鼠标悬浮多边形上动态修改鼠标样式

本篇介绍一下使用vue3-openlayers点击多边形弹框&#xff0c;高亮多边形&#xff0c;自定义属性传递&#xff0c;鼠标悬浮多边形上动态修改鼠标样式 1 需求 加载天地图&#xff0c;polygon传递自定义属性标悬浮在polygon上&#xff0c;根据自定义属性&#xff0c;动态修改鼠标…

vue中的状态管理

第1部分&#xff1a;引言 状态管理是应用中数据流动和变更的核心机制。在Vue应用中&#xff0c;状态管理不仅涉及到组件间的数据共享&#xff0c;还包括了数据的持久化、异步操作的处理等复杂场景。良好的状态管理策略可以提高应用的响应速度&#xff0c;降低组件间的耦合度&a…

四边形不等式优化

四边形不等式优化 应用于类似以下dp转移方程。 f i min ⁡ 1 ≤ j ≤ i ( w i , j , f i ) f_{i}\min_{1\le j\le i}(w_{i,j},f_{i}) fi​1≤j≤imin​(wi,j​,fi​) 假设 w i , j w_{i,j} wi,j​ 可以在 O ( 1 ) O(1) O(1) 的时间内进行计算。 在正常情况下&#xff0c;…

ctfshow 2023 愚人杯 web

easy_signin 观察url&#xff0c;发现base64 &#xff0c;进行解码&#xff0c;原来可以访问文件路径&#xff0c;那我们访问一下index.php ?imgaW5kZXgucGhw查看源代码发现还是base64 解码得到flag 被遗忘的反序列化 <?php# 当前目录中有一个txt文件哦 error_reporti…

华为数通题库HCIP-821——最新最全(带答案解析)

单选11、某台路由器运行IS—IS,其输出信息如图所示&#xff0c;下列说法错误的是? A、邻居路由器的System-ID为0002.0200.2002 B、本路由器是DIS C、本路由器的区域号为49.0001 D、本路由器System-ID为0100.0000.1001 解析&#xff1a;根据输出信…

java获取指定目录,所有类及其注释名称

场景&#xff1a;获取所有类及名称 &#xff08;整理或填写表格需要&#xff09; 效果&#xff1a; 代码&#xff1a; public static void main(final String[] args) {final File currentDirectory new File("D:\\workspace\\petro-bcenter\\src\\main\\java\\com&quo…

【Android WebView】WebView基础

一、简介 WebView是一个基于webkit引擎、展现web页面的控件。Android的Webview在低版本和高版本采用了不同的webkit版本内核&#xff0c;4.4后直接使用了Chrome。 二、重要类 以WebView类为基础&#xff0c;WebSettings、WebViewClient、WebChromeClient为辅助共同完成安卓段加…

经典游戏案例:植物大战僵尸

学习目标&#xff1a;植物大战僵尸核心玩法实现 游戏画面 项目结构目录 部分核心代码 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using Random UnityEngine.Random;public enum Z…

可解释机器学习之SHAP方法

以Breast cancer wisconsin (diagnostic) dataset数据集为例。 # Built-in libraries import math import numpy as np import pandas as pd# Visualization libraries import matplotlib.pyplot as plt import seaborn as sns# Sklearn libraries # from skle…

vivado、vitis2022安装及其注意事项(省时、省空间)

1、下载 AMD官网-资源与支持-vivado ML开发者工具&#xff0c;或者vitis平台&#xff0c; 下载的时候有个官网推荐web安装&#xff0c;亲测这个耗时非常久&#xff0c;不建议使用&#xff0c;还是直接下载89G的安装包快。 注意&#xff1a;安装vitis平台会默认安装vivado&…

基于大型语言模型的全双工语音对话方案

摘要解读 我们提出了一种能够以全双工方式运行的生成性对话系统&#xff0c;实现了无缝互动。该系统基于一个精心调整的大型语言模型&#xff08;LLM&#xff09;&#xff0c;使其能够感知模块、运动功能模块以及一个具有两种状态&#xff08;称为神经有限状态机&#xff0c;n…

SpringMVC系列六: 视图和视图解析器

视图和视图解析器 &#x1f49e;基本介绍&#x1f49e; 自定义视图为什么需要自定义视图自定义试图实例-代码实现自定义视图工作流程小结Debug源码默认视图解析器执行流程多个视图解析器执行流程 &#x1f49e;目标方法直接指定转发或重定向使用实例指定请求转发流程-Debug源码…

考前刷题练手感(北航期末往年数据结构编程题)

本次因为是考前一天极速刷题&#xff0c;所以没有讲解&#xff0c;若有问题可私信。 目录 一、 查找同时空人员二、 老鼠回家-无回路三、函数调⽤关系四、东二食堂模拟五、栈帧 一、 查找同时空人员 【问题描述】 假设一共有6个手机基站&#xff0c;都具有记录手机连接基站状…

51单片机定时器中断配置

测试环境 单片机型号&#xff1a;STC8G1K08-38I-TSSOP20&#xff0c;其他型号请自行测试&#xff1b; IDE&#xff1a;Keil C51&#xff1b; 定时器配置及主要代码 以定时器T0为例&#xff0c;查看手册&#xff0c;有4种工作模式&#xff1a;模式0&#xff08;16位自动重装载…

软件测试笔记

一、介绍 软件测试是为了尽可能多地发现软件系统中的错误而不是证明软件的正确性。 1、软件缺陷是什么&#xff1f; 软件在使用过程中存在的任何问题都叫软件的缺陷&#xff0c;简称bug。 缺陷的判定标准 软件未实现需求说明书中明确要求的功能——少功能 软件出现了需求说…

Django从入门到精通:First [Django版本.Python面向对象.Web基础.创建Django项目]

文章目录 Django初学者指南1 Django简介1.1 Django的历史1.2 使用Django的知名网站1.4 Django的主要特点1.5 Django的工作原理 2 Django 版本选择2.1 Django 支持的 Python 版本2.2 Django 版本 3 Django 开发 Web 程序3.1 Python知识点3.1.1 Python 函数3.1.2 Python 面向对象…

LabVIEW电机故障监测系统

电机作为工业生产中的关键设备&#xff0c;其故障会导致生产停滞和经济损失。因此&#xff0c;开发一个能实时监控电机状态并预测潜在故障的系统具有重要意义。通过高效的数据采集和分析技术&#xff0c;提升故障诊断的准确性和及时性。 系统组成 该系统由以下部分组成&#…