【应用日志】logback-spring配置详细说明

最近部署应用,日志存放是个大问题,有elk,也想本地文件,在本地存储过程遇到一些问题,记录一下 logback 配置参数说明。

<?xml version="1.0" encoding="UTF-8"?>
<!--
configuration 根节点
scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒;当scan为true时,此属性生效。默认的时间间隔为1分钟。
debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
-->
<configuration scanPeriod="60 seconds"><!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><!--property子节点property用来定义变量值的标签,<property> 有两个属性,name和value。通过<property>定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。使用 ${} 来动态读取系统命令行参数来指定日志输出路径<property name="log.path" value="${LOG_PATH:-.}/logs"/><property name="MAX_FILE_SIZE" value="10MB"/>注意:配置文件名为logback.xml,则使用的是property配置文件名为logback-spring.xml,则使用的是springProperty使用springProperty来获取到application.yml中的配置来指定输出路径--><!--        <springProperty name="LOG_NAME" scope="context" source="spring.application.name" defaultValue="zjjggl-company"/>--><!--        <springProperty name="LOG_PATH" scope="context" source="logging.path" defaultValue="/logs"/>--><!--        <springProperty name="LOG_ROOT_LEVEL" scope="context" source="logging.level.root" defaultValue="DEBUG"/>--><!--        <springProperty name="LOG_MAX_FILE_SIZE" scope="context" source="logback.file-size" defaultValue="100MB"/>--><!--        <springProperty name="LOG_FILE_MAX_DAY" scope="context" source="logback.max-history" defaultValue="30"/>--><!--        <!– 标识这个"STDOUT" 将会添加到这个logger –>--><!--        <springProperty  name="STDOUT" scope="context" source="log.stdout" defaultValue="STDOUT"/>--><!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 --><!--        <property name="LOG_HOME" value="${LOG_PATH}" />--><!--        <property name="CONTEXT_NAME" value="${LOG_NAME}" />--><property name="CONTEXT_NAME" value="gengbao"/><property name="LOG_HOME" value="F:/logs"/><property name="LOG_MAX_FILE_SIZE" value="50MB"/><property name="LOG_FILE_MAX_DAY" value="30"/><!--contextName:每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用<contextName>设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。--><contextName>${CONTEXT_NAME}</contextName><!-- 彩色日志 --><!-- 彩色日志依赖的渲染类 --><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/><conversionRule conversionWord="wex"converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/><conversionRule conversionWord="wEx"converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/><!-- 控制台彩色日志格式 --><!--格式化输出:%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss.SSS}%level: 级别%thread: 线程名%logger{36}:表示Logger名字最长36个字符%msg: 日志消息%n: 换行符--><property name="CONSOLE_LOG_PATTERN"value="[${CONTEXT_NAME}] %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%level){blue} %clr(${PID}){magenta} %clr([%thread]){orange} %clr(%logger{36} [%file : %line]){cyan}  - %msg%n{LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/><property name="CONSOLE_LOG_PATTERN_NO_COLOR"value="[${CONTEXT_NAME} %d{yyyy-MM-dd HH:mm:ss.SSS} %level ${PID} [%thread] %logger{36} [%file : %line] - %msg%n{LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/><!-- 文件日志样式 --><property name="FILE_LOG_PATTERN"value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } [%t] %-40.40logger{39} %L : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><!-- 禁用logback自身日志输出 --><statusListener class="ch.qos.logback.core.status.NopStatusListener"/><!-- appender定义的是Log输出的地方ConsoleAppender(控制台)FileAppender(文件)DailyRollingFileAppender(每天产生一个日志文件)RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)WriterAppender(将日志信息以流格式发送到任意指定的地方)--><!-- 输出到控制台,本地调试时可以开启此输出,方便本地调试与排查问题,部署线上环境时候切记要注释掉。ps:服务器上输出到日志文件中,所以要注释掉,否则tail log时会产生两份日志等及其他问题,最好注释掉。--><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${CONSOLE_LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder></appender><!-- 按照每天生成常规日志文件 ,滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件--><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 指定日志文件的名称 --><file>${LOG_HOME}/${CONTEXT_NAME}/info.log</file><!--是否追加到文件末尾,默认为true--><append>true</append><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>DENY</onMatch><!-- 如果命中ERROR就禁止这条日志 --><onMismatch>ACCEPT</onMismatch><!-- 如果没有命中就使用这条规则 --></filter><!-- 基于时间的分包策略 --><!--当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。--><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动%i:当文件大小超过maxFileSize时,按照i进行文件滚动--><fileNamePattern>${LOG_PATH}/${CONTEXT_NAME}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern><!--当日志文件超过maxFileSize指定的大小时,根据上面提到的%i进行日志文件滚动注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy--><maxFileSize>${LOG_MAX_FILE_SIZE}</maxFileSize><!--可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动,且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。注意,删除旧文件时,那些为了归档而创建的目录也会被删除。--><!--保留时间,单位:天--><maxHistory>${LOG_FILE_MAX_DAY}</maxHistory></rollingPolicy><!-- 输出的日志内容格式化--><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${FILE_LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder><!-- 此日志文件只记录info级别的 -->
<!--        <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_HOME}/${CONTEXT_NAME}/error.log</file><!-- 基于时间的分包策略 --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/${CONTEXT_NAME}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern><!--保留时间,单位:天--><maxHistory>${LOG_FILE_MAX_DAY}</maxHistory><!--当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认100MB--><maxFileSize>${LOG_MAX_FILE_SIZE}</maxFileSize></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${FILE_LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder><!-- 只打印错误日志 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 异步写日志 --><!--    <appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">--><!--        <discardingThreshold>0</discardingThreshold>--><!--        <queueSize>1024</queueSize>--><!--        <appender-ref ref="FILE"/>--><!--    </appender>--><!--    <appender name="ASYNC_FILE_ERROR" class="ch.qos.logback.classic.AsyncAppender">--><!--        <discardingThreshold>0</discardingThreshold>--><!--        <queueSize>1024</queueSize>--><!--        <appender-ref ref="FILE_ERROR"/>--><!--    </appender>--><!-- logger子节点logger用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>name: 表示匹配的logger类型前缀,也就是包的前半部分(包名 或 类的全路径)level: 要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR < FATAL(logger中的level会覆盖root中的,即以logger中为准,不管是否向上传递)additivity: 是否向上级logger传递打印信息,默认是true,作用在于children-logger是否使用root配置的appender进行输出(日志信息是否向上(root)传递)默认情况下子Logger会继承root的Logger的appender,也就是说子Logger会在root的Logger的appender里输出false,表示只会在自己的appender-ref里输出,此logger的打印信息不再向上级传递true,表示当前logger的appender-ref和root的appender-ref都有效,日志会打印两次 logger本身打印一次,root又打印一次不设置appender,此logger本身不打印任何信息,additivity为true,也仅打印一次logger 配置,不指定级别,不指appender,使用 root 节点的打印级别设置为 info--><!--mybatis plus configure --><logger name="com.apache.ibatis" level="TRACE"/><logger name="java.sql.Connection" level="DEBUG"/><logger name="java.sql.Statement" level="DEBUG"/><logger name="java.sql.PreparedStatement" level="DEBUG"/><!-- 因为mybatis打印的sql日志是debug级别的,所以特意指定mybatis的日志为debug,不然sql语句打印不出来   --><logger name="com.guodi.zjjggl.mapper" level="DEBUG" /><!-- 指定项目中某个包,当有日志操作行为时的日志记录级别,name包必须能够扫描到所有类,包括启动。 --><!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE如果设置为 WARN ,则低于WARN的信息都不会输出(也就是说代码中的日志打印log.warn、log.error、log.fatal才会输出)  -->
<!--    <logger name="com.guodi.zjjggl.service" level="INFO" additivity="false">-->
<!--        <appender-ref ref="FILE"/>-->
<!--        <appender-ref ref="FILE_ERROR"/>-->
<!--    </logger>--><!-- 不同环境的日志级别配置 -->
<!--    <springProfile name="dev,test">-->
<!--        <logger name="com.guodi.zjjggl" level="DEBUG" additivity="false">-->
<!--            <appender-ref ref="STDOUT"/>-->
<!--            <appender-ref ref="FILE"/>-->
<!--            <appender-ref ref="FILE_ERROR"/>-->
<!--        </logger>-->
<!--    </springProfile>--><!--    <springProfile name="prod">-->
<!--        <logger name="com.guodi.zjjggl" level="INFO" a…

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

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

相关文章

appium+mumu模拟器+python 嚼碎菜鸟教程

1、android sdk 下载安装 下载地址&#xff1a;https://www.androiddevtools.cn/index.html# 选择版本&#xff1a;android sdk【sdk tools:installer_r24.4.1-windows.exe】 参考步骤&#xff1a;https://blog.csdn.net/2401_83004375/article/details/139300339 2、jdk 安装…

关于我的数据库——MySQL——第二篇

&#xff08;叠甲&#xff1a;如有侵权请联系&#xff0c;内容都是自己学习的总结&#xff0c;一定不全面&#xff0c;仅当互相交流&#xff08;轻点骂&#xff09;我也只是站在巨人肩膀上的一个小卡拉米&#xff0c;已老实&#xff0c;求放过&#xff09;。 表的操作 创建表…

Python飞舞蝙蝠

目录 系列文章 写在前面 完整代码 代码分析 写在后面 系列文章 序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码…

Canvas简历编辑器-选中绘制与拖拽多选交互设计

Canvas简历编辑器-选中绘制与拖拽多选交互设计 在之前我们聊了聊如何基于Canvas与基本事件组合实现了轻量级DOM&#xff0c;并且在此基础上实现了如何进行管理事件以及多层级渲染的能力设计。那么此时我们就依然在轻量级DOM的基础上&#xff0c;关注于实现选中绘制与拖拽多选交…

基于Multisim的四位抢答器设计与仿真

四位选手进行抢答比赛&#xff0c;用基本门电路及集成逻辑器件构成四人抢答器。选手编号分别为1&#xff0c;2&#xff0c;3&#xff0c;4号&#xff0c;用S1&#xff0c;S2&#xff0c;S3&#xff0c;S4四个按钮作为抢答按钮&#xff0c;S0按钮为总清零按钮。当四人中任何一个…

20241031使用Rockchip原厂RK3566的Buildroot编译RK3399方案

20241031使用Rockchip原厂RK3566的Buildroot编译RK3399方案 2024/10/31 18:06 RK3566_Linux5.10_V1.2.0_20241022.tar.gz rk356x_linux5p10_v120_20241025_1020.tgz 由于Rockchip可能像全志一样&#xff0c;为了简单&#xff0c;直接所有的SDK都打包/放置在一个git仓库里了&…

算法定制LiteAIServer视频智能分析软件的过亮、过暗及抖动检测应用场景

在现代社会中&#xff0c;视频监控系统扮演着举足轻重的角色&#xff0c;其视频质量直接关乎监控系统的可靠性与有效性。算法定制LiteAIServer通过引入抖动检测和过亮过暗检测功能&#xff0c;为视频监控系统的稳定性和用户体验带来了显著提升。 以下是对这两种功能的技术实现、…

OpenCV 学习笔记

OpenCV 环境安装 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 显示窗口 cv2.namedWindow 是 OpenCV 库中的一个函数&#xff0c;用于创建一个命名窗口&#xff0c;以便在该窗口中显示图像或进行其他图形操作。这个函数在处理图像和视频时非常…

超越 YOLOv8,MAF-YOLO利用重参化异构卷积大幅度提升多尺度信息融合能力!

由于多尺度特征融合的有效性能&#xff0c;路径聚合FPN&#xff08;PAFPN&#xff09;被广泛应用于YOLO检测器中。 然而&#xff0c;它不能同时高效且自适应地融合高级语义信息与低级空间信息。本文提出了一种名为MAF-YOLO的新模型&#xff0c;这是一个具有多功能 Neck 网络的新…

堆(堆排序,TOP K, 优先级队列)

1 概念解释 堆的定义&#xff1a;堆是一颗完全二叉树&#xff0c;分为大堆和小堆 大堆&#xff1a;一棵树中&#xff0c;任何父亲节点都大于等于孩子的节点&#xff0c;大堆的根结点最大 小堆&#xff1a;一棵树中&#xff0c;任何父亲节点都小于等于孩子节点&#xff0c;小堆…

练习LabVIEW第二十八题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第二十八题&#xff1a; 建立一个VI&#xff0c;模拟滚动—个骰子(骰子取值1~6)&#xff0c;跟踪骰子滚动后的取值出现次数…

延迟队列的安装步骤

RabbitMQ 中的延迟队列&#xff08;Delayed Queue&#xff09;是一种特殊的队列&#xff0c;用于在消息被发送后延迟一段时间再投递给消费者。它在许多场景中非常有用&#xff0c;例如需要定时执行的任务、限流、重试机制等。 使用场景 定时任务: 例如发送提醒邮件或通知&…

六,Linux基础环境搭建(CentOS7)- 安装HBase

Linux基础环境搭建&#xff08;CentOS7&#xff09;- 安装HBase 大家注意以下的环境搭建版本号&#xff0c;如果版本不匹配有可能出现问题&#xff01; 一、HBase下载及安装 HBase是一个分布式的、面向列的开源数据库&#xff0c;该技术来源于 Fay Chang 所撰写的Google论文“…

在 .NET 8 Web API 中实现 Entity Framework 的 Code First 方法

本次介绍分为3篇文章&#xff1a; 1&#xff1a;.Net 8 Web API CRUD 操作.Net 8 Web API CRUD 操作-CSDN博客 2&#xff1a;在 .Net 8 API 中实现 Entity Framework 的 Code First 方法https://blog.csdn.net/hefeng_aspnet/article/details/143229912 3&#xff1a;.NET …

斐波那契时间序列,精准捕捉市场拐点 MT4免费公式源码!

指标名称&#xff1a;斐波那契时间序列 版本&#xff1a;MT4 ver. 2.01 斐波那契时间序列是一种技术分析工具&#xff0c;通过将斐波那契数列&#xff08;如1, 2, 3, 5, 8, 13等&#xff09;应用于时间轴上&#xff0c;用于预测市场价格的时间周期拐点。斐波那契时间序列在股…

Unsafe Fileupload-pikachu

系列目录 第一章 暴力破解 第二章 Cross-Site Scripting-pikachu 第三章 CSRF 第四章 sql-injection 第五章 RCE 第六章 File inclusion 第七章 Unsafe filedownload 第八章 Unsafe fileupload 概述 不安全的文件上传漏洞概述 文件上传功能在web应用系统很常见&#x…

嵌入式学习-网络-Day05

嵌入式学习-网络-Day05 1.网络超时检测 1.1应用场景 1.2设置超时检测 1&#xff09;通过参数设置 2&#xff09;setsockopt属性设置 3&#xff09;定时器alarm设置 2.广播 2.1广播发送流程&#xff1a; 2.2广播接收流程&#xff1a; 3.组播 3.1组播发送流程 3.2组播接收流程 4.…

Android启动流程_SystemServer阶段

前言 上一篇文档我们描述了在 Android 启动流程中 Zygote 部分的内容&#xff0c;从 Zygote 的配置、启动、初始化等内容展开&#xff0c;描述了 Zygote 在 Android 启动中的功能逻辑。本篇文档将会继续 Android 启动流程的描述&#xff0c;从 SystemServer 进程的内容展开&am…

一年期免费HTTPS证书:网络安全新选择

HTTPS证书的重要性 HTTPS证书&#xff0c;全称为安全套接字层/传输层安全协议证书&#xff0c;是一种在互联网上建立安全连接的数字证书。它通过公钥加密技术&#xff0c;对网站和用户之间的数据传输进行加密&#xff0c;有效防止数据被窃取或篡改&#xff0c;保障用户信息的安…

(实战)WebApi第10讲:Swagger配置、RESTful与路由重载

一、Swagger配置 1、导入SwashBuckle.AspNetCore包 2、在.NET Core 5框架里的startup.cs文件里配置swagger 3、在.NET Core 6框架里的Program.cs文件里配置swagger 二、RESTful风格&#xff1a;路由重载&#xff0c;HttpGet()括号中加参数 &#xff08;1&#xff09;原则&…