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

日志配置的一些思考

日志配置的一些思考

  • 背景
  • 说明
  • 基础配置抽取
  • 子服务扩展配置

背景

基本所有的系统都需要完善的日志配置, 这里是一些常用的配置. 但是没有本地验证, 只能提供一份配置思路.

说明

不可直接用, 会报错, 提供一种配置思路.
不可直接用, 会报错, 提供一种配置思路.
不可直接用, 会报错, 提供一种配置思路.

基础配置抽取

这里是抽取的基础日志: basic-logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<included>
    <property name="pattern" value="%date %level [%thread] %logger{10} [%file : %line] %msg%n"/>

    <appender name="spring" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/spring.log</file>
        <encoder>
            <pattern>${pattern}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${LOG_HOME}/spring.%i.log.gz</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>20</maxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>300M</maxFileSize>
        </triggeringPolicy>
    </appender>

    <appender name="accessAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/access.log</file>
        <encoder>
            <pattern>%date --- %level --- [%X{X-B3-TraceId}, %X{X-B3-SpanId}, %X{X-Span-Export}] --- [%thread] --- %logger{10} --- [%file : %line] %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${LOG_HOME}/access.%i.log.gz</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>20</maxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>300M</maxFileSize>
        </triggeringPolicy>
    </appender>

    <appender name="warnError" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/warn_error.log</file>
        <encoder>
            <pattern>${pattern}</pattern>
        </encoder>
        <!-- 自定义过滤器 -->
        <filter class="com.xxx.xxx.xx.ExceptionThresholdFiler">
            <level>WARN</level>
            <exceptionClazz>com.xxx.xxx.xxx.BusinessException</exceptionClazz>
            <onMatch>EDNY</onMatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${LOG_HOME}/warn_error.%i.log.gz</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>20</maxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>300M</maxFileSize>
        </triggeringPolicy>
    </appender>

    <appender name="businessError" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/business_error.log</file>
        <encoder>
            <pattern>${pattern}</pattern>
        </encoder>
        <!-- 自定义过滤器 -->
        <filter class="com.xxx.xxx.xx.ExceptionThresholdFiler">
            <level>WARN</level>
            <exceptionClazz>com.xxx.xxx.xxx.BusinessException</exceptionClazz>
            <onMatch>EDNY</onMatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${LOG_HOME}/business_error.%i.log.gz</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>20</maxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>300M</maxFileSize>
        </triggeringPolicy>
    </appender>

    <!-- 自定义Logger -->
    <logger name="com.xxx.xxx.xxx.AccessLogRecorder" level="info" additivity="false">
        <appender-ref ref="accessAppender"/>
    </logger>

    <root level="info">
        <appender-ref ref="spring"/>
        <appender-ref ref="warnError"/>
        <appender-ref ref="businessError"/>
    </root>
</included>

子服务扩展配置

子服务配置: servie1-logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="3 seconds">
    <!-- dev环境生效 -->
    <springProfile name="dev">
        <property name="LOG_HOME" value="./logs"/>
    </springProfile>
    <!-- 非dev环境生效 -->
    <springProfile name="!dev">
        <property name="LOG_HOME" value="${logging.path}"/>
    </springProfile>
    <!-- 外部公共配置 -->
    <include resource="basic-logback.xml"></include>

    <appender name="xxxxxService" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/service.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${LOG_HOME}/service/service.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>

    <logger name="com.xxx.xxx" level="info" additivity="true">
        <appender-ref ref="xxxxxService"></appender-ref>
    </logger>

    <springProfile name="dev">
        <root>
            <appender-ref ref="console"/>
        </root>
    </springProfile>
</configuration>

相关文章:

  • 1.前端--基本概念【2023.11.25】
  • 【DevOps】Git 图文详解(九):工作中的 Git 实践
  • 网络篇---第一篇
  • ubuntu 使用快照启动polygon主网
  • Linux内核--内存管理(四)CPU缓存
  • 【开源】基于Vue+SpringBoot的农家乐订餐系统
  • C语言——单链表(增删改查)
  • Java枚举
  • Kafka-TopicPartition
  • 一键下载Python各版本中的最新版
  • 通用功能——git 攻略
  • 什么是轻量应用服务器?可以从亚马逊云科技的优势入手了解
  • QT visual stdio加载动态库报错126问题
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • 软件测试职业规划导图
  • 【漏洞复现】Array VPN任意文件读取漏洞
  • 系统架构设计:8 论软件架构风格
  • 【数据库篇】关系模式的表示——(2)规范化
  • UVA1025 城市里的间谍 A Spy in the Metro
  • 【深度学习】如何选择神经网络的超参数
  • 何立峰:中方坚定支持多边主义和自由贸易,支持世贸组织在全球经济治理中发挥更大作用
  • 中美经贸中方牵头人、国务院副总理何立峰出席新闻发布会表示:中美达成重要共识,会谈取得实质性进展
  • 退休夫妻月入1.2万负债1.2亿申请破产,律师:“诚实而不幸”系前置条件
  • 湖南省职业病防治院通报3岁女童确诊“铊中毒”:去年病例,编辑误写为“近日”
  • 保证断电、碰撞等事故中车门系统能够开启!汽车车门把手将迎来强制性国家标准
  • 警惕“全网最低价”等宣传,市监总局和中消协发布直播消费提示