logback异步日志,支持滚动策略

2023-10-27

logback.properties

# error日志保存路径
LOG_ERROR_HOME=./logs/error/
# info日志保存路径
LOG_INFO_HOME=./logs/info/
# 最长保存天数
MAX_HISTORY=7
# 日志文件最大
MAX_FILE_SIZE=10MB

logback-spring.xml

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <property resource="logback.properties"/>
    <!-- 彩色日志依赖的渲染类 -->
    <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"/>

    <!-- 日志格式 -->
    <property name="log.pattern"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){blue} %clr([%-5p]){green} %clr([%X{TRACE_ID}]){red} %clr(${PID:- }){magenta} %clr(&#45;&#45;){faint}  %clr(%-40.40logger{60} Line:%-3L){cyan} %clr(:){faint}  %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx }}"/>

    <appender name="CONSOLE-LOG" class="ch.qos.logback.core.ConsoleAppender">
        <!--<layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${log.pattern}</pattern>
        </layout>-->
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>

    <!--获取比info级别高(包括info级别)但除error级别的日志-->
    <appender name="INFO-LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>${LOG_INFO_HOME}%d/%d-info-%i.log</fileNamePattern>
            <maxHistory>${MAX_HISTORY}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <appender name="ERROR-LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>${LOG_ERROR_HOME}%d/%d-error-%i.log</fileNamePattern>
            <maxHistory>${MAX_HISTORY}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>


    <appender name="LOCK-FAILED" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>${LOG_LOCK_ERROR}%d/%d-LOCK-FAILED-%i.log</fileNamePattern>
            <maxHistory>${MAX_HISTORY}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <!-- 异步输出 -->
    <appender name="ASYNC-INFO" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>256</queueSize>
        <!-- 添加附加的appender,最多只能添加一个 -->
        <appender-ref ref="INFO-LOG"/>
    </appender>

    <appender name="ASYNC-ERROR" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>256</queueSize>
        <!-- 添加附加的appender,最多只能添加一个 -->
        <appender-ref ref="ERROR-LOG"/>
    </appender>


    <root level="info">
        <appender-ref ref="CONSOLE-LOG" />
        <appender-ref ref="ASYNC-INFO" />
        <appender-ref ref="ASYNC-ERROR" />
    </root>



</configuration>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

logback异步日志,支持滚动策略 的相关文章

  • 将 MouseListener 添加到面板

    我正在尝试将鼠标操作添加到我的面板中 这就是程序应该做的事情 编写一个程序 允许用户通过按三下鼠标来指定一个三角形 第一次按下鼠标后 画一个小点 第二次按下鼠标后 绘制一条连接前两个点的线 第三次按下鼠标后 绘制整个三角形 第四次按下鼠标会
  • 在 jTextfield 中禁用“粘贴”

    我有一个用 Swing awt 编写的应用程序 我想阻止用户将值粘贴到文本字段中 有没有办法在不使用动作监听器的情况下做到这一点 您可以使用 null 参数调用 setTransferHandler 如下所示 textComponent s
  • 重写 getPreferredSize() 会破坏 LSP

    我总是在这个压倒一切的网站上看到建议getPreferredSize 而不是使用setPreferredSize 例如 如前面的线程所示 对于固定大小的组件 使用重写 getPreferredSize 而不是使用 setPreferredS
  • 本地开发的 Azure Functions 扩展包版本问题

    我有一个带有队列触发器的 Java 11 Azure 函数 该函数在部署到 Azure 时按预期工作 并正确从定义的服务总线主题中提取消息 但是 运行相同的功能locally除非我回滚版本 否则不起作用Azure Functions 绑定扩
  • 无法访问“不安全”java方法的java表达式语言

    我正在开发一个项目 让用户向服务器提交小 脚本 然后我将执行这些脚本 有很多脚本语言可以嵌入到Java程序中 例如mvel ognl uel clojure rhino javascript等 但是 据我所知 它们都允许脚本编写者调用Jav
  • JavaFX使节点覆盖父节点边框颜色

    我有一个如下所示的节点 仅使用 css 我希望标签覆盖其父边框颜色 因此标签下方的边框颜色部分变得不可见 我用来制作这个边框的CSS代码 fx border color black fx border width 3 fx border r
  • 如何在 HandlerInterceptorAdapter 中添加 HttpServletRequest 标头?

    我正在尝试将授权标头添加到我的请求中 作为我们切换环境时的临时解决方法 我试图在扩展 HandlerInterceptorAdapter 的拦截器中处理它 我使用 MutableHttpServletRequest 类制作here http
  • 无法从资源加载图片

    So I am trying to load a image file from a resource so that when I export my application into a jar file it could be use
  • 在grails控制器中识别ajax请求或浏览器请求

    我正在开发一个使用大量ajax的grails应用程序 如果请求是ajax调用 那么它应该给出响应 这部分正在工作 但是如果我在浏览器中输入URL 它应该带我到主页 索引页面而不是请求的页面 下面是ajax调用的示例gsp代码
  • 在 java 中运行外部应用程序但不要等待它完成

    我正在用java编写一个应用程序 允许我运行其他应用程序 为此 我使用了 Process 类对象 但当我这样做时 应用程序会等待进程结束 然后再退出 有没有办法在 Java 中运行外部应用程序 但不等待它完成 public static v
  • 嵌套字段的 Comparator.comparing(...)

    假设我有一个这样的域模型 class Lecture Course course getters class Course Teacher teacher int studentSize getters class Teacher int
  • Java 中 JButton 的击键/热键

    最初我使用 JMenu 并建立热键以使用加速器工作 它运行得很好 现在我想在 JButton 中实现相同的行为 但我陷入困境 这是我编写的代码 请分享您的想法 以便我可以走上正确的道路 import javax swing import j
  • 如何以编程方式创建 CardView

    我正在开发一个 Android 应用程序Java Android Studio 我想在活动中创建CardView以编程方式 我想将以下属性设置为CardView layout width wrap content layout row 0
  • 当底层连接是有状态时如何使用 Apache HttpClient?

    我在谷歌上搜索了很多关于如何使用 HttpClient 进行多线程处理的信息 他们中的大多数人建议使用 ThreadSafeClientConnManager 但我的应用程序必须登录某个主机 登录表单页面 以便 HttpClient 获得底
  • 删除 JFX 中选项卡后面的灰色背景

    So is there any way to remove the gray area behind the tab s 我尝试过用 CSS 来做到这一点 但没有找到方法 要设置 tabpane 标题的背景颜色 请在 CSS 文件中写入 t
  • 如何使用Gson仅从Json反序列化某些特定字段?

    我有以下 JSON 字符串 channel bvmt initValues data value instrumentIds TN0007250012 TN0007500010 instruments mnemonic ADWYA marc
  • Collections.sort(list) 和 list.sort(Comparator) 之间的区别

    有什么理由让我应该选择Collections sort list 方法而不是简单地调用list sort 内部Collections sort只是调用sort的方法List无论如何 上课 令人惊讶的是几乎每个人都告诉我使用Collectio
  • Axis2 错误:要输出的文本中的空白字符 (0x4) 无效

    我创建了一个 Java 客户端 使用 Axis2 1 7 6 作为代码生成器与 SOAP Web 服务进行交互 问题在于客户端的某些输入抛出异常并显示以下消息 org apache axis2 AxisFault Invalid white
  • spring data jpa复合键重复键记录插入导致更新

    我有一个具有复合键的实体 我试图通过使用 spring data jpa 存储库到 mysql 数据库来持久化它 如下所示 Embeddable public class MobileVerificationKey implements S
  • 决策树和规则引擎 (Drools)

    In the application that I m working on right now I need to periodically check eligibility of tens of thousands of object

随机推荐

  • python 计算置信区间_从样本数据计算置信区间

    这里是shasan代码的缩写版本 计算数组a的平均值的95 置信区间 import numpy as np scipy stats as st st t interval 0 95 len a 1 loc np mean a scale s
  • python接口自动化 —— 接口测试工具介绍(详解)

    简介 工欲善其事必先利其器 通过前边几篇文章的介绍 大家大致对接口有了进一步的认识 那么接下来让我们看看接口测试的工具有哪些 目前 市场上有很多支持接口测试的工具 利用工具进行接口测试 能够提供测试效率 例如 假 入让你一天完成100个接口
  • [信息论与编码] 03. 离散信源、信源熵、联合熵、条件熵

    离散信源 信源即信息发出的源头 在后续的信道模型中 信源发出的信息即视为信道输入的信息 根据信源发出信息的取值 可将信源分为离散信源和连续信源 顾名思义 离散信源即发出的信息取值为离散型的信源 连续信源即发出的信息取值为连续型的信源 离散信
  • [xenclient] 使用总结 ---centos 下使用高精度的console控制台

    在centos里运行了几个服务 因为主要是服务的目的 就没装X Window 只在console控制台下操作 不过centos默认的console控制台仅仅支持 80x25的文本模式 太粗糙了 而且在xenclient的环境下 控制台反应速
  • IntelliJ IDEA使用_常规设置

    文章目录 版本说明 主题设置 取消检查更新 依赖自动导入 禁止import xxx 允许import内部类 显示行号 方法分割线 空格 代码提示 匹配所有字母 自定义注释颜色 添加头部注释 自定义字体 设置字符编码 关联本地Git JDK编
  • python生成的exe无法使用charles抓取到包

    最近分析一个模仿我比价软件的程序 是用python写的然后编译成EXE文件 直接上charles 发现根本没有记录到任何程序发出的请求包 上proxifier 能抓住包了 但是没法解析https包 出现 SSL handshake with
  • Spring Cloud 微服务安全

    Author Hedon Github spring security oauth2 0 前篇 Spring Cloud 微服务安全 一 API 安全 Spring Cloud 微服务安全 二 网关安全 Spring Cloud 微服务安全
  • STM32 ADC DMA数据不稳定的解决方案

    参考文章 ADC 采样数据抖动 STM32 ADC 采样值不准确 情况分析及解决办法 在项目开发中 经常需要用到ADC采样的做电压检测 而且多通道ADC检测的情况比较多 所以本篇基于此要求采用了ADC DMA的方法 下面先给出基础代码 ST
  • VC实现对话框窗口任意分割

    最近写MFC的程序 想在对话框里实现窗口的任意分割 现在网络资料一大抄 找个东西实在麻烦 总算这个很简单 很快就搞定了 写下来做个笔记 个人认为简单问题最好就是直接贴源代码 一看就明白 说来说去反而弄不清楚 那我就少废话了 自己看吧 注释很
  • MyBatis代码自动生成(利用命令)

    这几天在学习springmvc 需要用到mybatis 所以研究了一下mybatis自动代码生成 当然也可以手动敲 但是那样效率非常的慢 并且出错率也是很高的 利用MyBatis生成器自动生成实体类 DAO接口和Mapping映射文件 这样
  • OpenCV报错:error: (-215:Assertion failed) type == B.type() in function 'gemm'的原因,修改方法

    1 问题 OpenCV在做Mat矩阵运算的时候报如下错误 error 215 Assertion failed type B type in function gemm 如下代码就会报此错误 cv Mat A 3 3 CV 32F cv M
  • Mysql行格式索引页

    本篇文章以InnoDB存储引擎为例 主要讲两个大知识点 行格式 索引页 也就是我们说的数据页 行格式 先想一个问题 MySql是什么 是一个数据库系统 用来干什么的 我们先来简化一下MySql MySql其实也是一个软件 它只是给我们管理数
  • vue2_模版语法

    目录 模版语法 react用jsx语法编译后的null作用 插值表达式 v bind和 关于国内谷歌自带翻译停用如何解决 额外 会一点的插值表达式 也有限制 模版语法 更接近原生js的写法jsx语法 jsx是react提出的 后很多前端框架
  • Apache commons digester简介说明

    转自 Apache commons digester简介说明 下文笔者讲述Apache commons digester组件的简介说明 如下所示 Apache commons digester组件简介说明 digester组件简化xml文件
  • 删除排序数组中的重复项

    给你一个有序数组 nums 请你 原地 删除重复出现的元素 使每个元素 只出现一次 返回删除后数组的新长度 不要使用额外的数组空间 你必须在 原地 修改输入数组 并在使用 O 1 额外空间的条件下完成 解题思路 双指针法 题目链接 初级算法
  • python语法--异常、模块、包的综合案例

    基本思路 1 新建python模块包my utils 其中内置了两个自定义模块模块 2 设置调用文件python基础语法 py去测试模块包是否有效 3 测试 txt文件仅用于测试 str util py文件内的代码如下 all str re
  • Navicat Premium 12注册表

    手动方式 关闭Navicat Win R 输入regedit回车 删除HKEY CURRENT USER Software PremiumSoft Data 这里是删除data整个文件夹 展开HKEY CURRENT USER Softwa
  • websocket 发送ping_那些很重要,但是不常用的技术,websocket

    1 为什么会有websocket 2 websocket协议格式 3 协议具体实现 一 为什么需要 WebSocket 初次接触 WebSocket 的人 都会问同样的问题 我们已经有了 HTTP 协议 为什么还需要另一个协议 它能带来什么
  • RocketMQ 部署不当导致磁盘空间不释放

    背景 生产环境采用 RocketMQ 三主三从集群搭建 6 个实例部署在 3 台 Linux 服务器上 节省资源 每台服务器部署一主一从 生产上运行一段时间后 发现磁盘空间报警 发现df与du显示的空间不一致 相差几十G 问题原因 Rock
  • logback异步日志,支持滚动策略

    logback properties error日志保存路径 LOG ERROR HOME logs error info日志保存路径 LOG INFO HOME logs info 最长保存天数 MAX HISTORY 7 日志文件最大