当前位置: 首页 > 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>
http://www.dtcms.com/a/4657.html

相关文章:

  • 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
  • 百战python04-循环结构
  • RESTful
  • Ubuntu 安装 JMeter:轻松上手
  • nodejs微信小程序+python+PHP-健身俱乐部在线管理平台的设计与实现-安卓-计算机毕业设计
  • 车载以太网-网络层-IPv4
  • 人工智能|机器学习——循环神经网络的简洁实现
  • 天线的负载
  • 跨越行业边界,CodeMeter护航AI领域安全与合规
  • 入门指南:介绍Python库——Pandas