springboot中抽离日志

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>myProject</contextName>
    <property name="log.path" value="log"/>
    <property name="log.maxHistory" value="15"/>
    <property name="log.colorPattern"
              value="%d{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%thread) | %boldGreen(%logger) | %msg%n"/>
    <property name="log.pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n"/>

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

    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/info/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <MaxHistory>${log.maxHistory}</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>NEUTRAL</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
            <evaluator>
                <!-- 默认为 ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
                <!--过滤掉所有日志消息中不包含"IniCronRunner"字符串的日志。-->
                <expression>return message.contains(" CONFIG CRON JOB");</expression>
            </evaluator>
            <!--用于配置符合过滤条件的操作。-->
            <OnMatch>DENY</OnMatch>
            <!--用于配置不符合过滤条件的操作-->
            <OnMismatch>ACCEPT</OnMismatch>
        </filter>

    </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/error/error.%d{yyyy-MM-dd}.log</fileNamePattern>
        </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="azure_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>
                ${log.path}/other/azure/azure_log.%d{yyyy-MM-dd}.%i.log
            </FileNamePattern>
            <cleanHistoryOnStart>false</cleanHistoryOnStart>
            <!-- 最多保存30天日志-->
            <MaxHistory>30</MaxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--日志文件最大的大小-->
                <maxFileSize>30MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <charset>UTF-8</charset>
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n
            </Pattern>
        </encoder>
    </appender>


    <appender name="cron_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>
                ${log.path}/other/cron/cron_log.%d{yyyy-MM-dd}.%i.log
            </FileNamePattern>
            <cleanHistoryOnStart>false</cleanHistoryOnStart>
            <!-- 最多保存30天日志-->
            <MaxHistory>30</MaxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--日志文件最大的大小-->
                <maxFileSize>30MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <charset>UTF-8</charset>
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n
            </Pattern>
        </encoder>
    </appender>
    <appender name="api_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>
                ${log.path}/other/api/api_log.%d{yyyy-MM-dd}.%i.log
            </FileNamePattern>
            <cleanHistoryOnStart>false</cleanHistoryOnStart>
            <!-- 最多保存30天日志-->
            <MaxHistory>30</MaxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--日志文件最大的大小-->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <charset>UTF-8</charset>
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n
            </Pattern>
        </encoder>
    </appender>
    <root level="debug">
        <appender-ref ref="console"/>
    </root>

    <root level="info">
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </root>
    <logger name="com.test.system.service.trigger.AzureTrigger" level="info" additivity="true">
        <appender-ref ref="azure_log"/>
    </logger>
    <logger name="com.test.system.schedule">
        <appender-ref ref="cron_log"/>
    </logger>
    <logger name="com.test.system.api">
        <appender-ref ref="api_log"/>
    </logger>
 
</configuration>
相关推荐
weisian15112 小时前
Java并发编程--33-Redis分布式缓存三大核心架构:主从、哨兵、分片,落地实战与选型
java·redis·缓存·主从架构·哨兵架构·分片架构
清溪54912 小时前
Damn Vulnerable Web Application(中)
后端
清溪54912 小时前
Damn Vulnerable Web Application(上)
后端
APIshop12 小时前
Python 爬虫获取京东商品详情 API 接口实战指南
java·服务器·数据库
wang090712 小时前
Linux性能优化之内存管理基础知识
java·linux·性能优化
掘金码甲哥12 小时前
AI编程智能体登味太浓了,必须治一治!
后端
StackNoOverflow12 小时前
SpringCloud的声明式服务调用 Feign 全面解析
后端·spring·spring cloud
范什么特西12 小时前
idea创建一个普通的Maven项目运行javaweb
java·maven·intellij-idea
木心术112 小时前
RESTful API设计最佳实践:构建可扩展的后端服务
后端·restful
Jooolin12 小时前
把 OpenClaw 接进电商后台之后,我对 AI 落地这件事的理解变了
后端·ai编程