首页 > 解决方案 > 带有 Logback 的 Spring Boot Logger - 用于不同包的 2 个不同文件

问题描述

我已阅读有关它的所有相关问题,但没有运气。我需要将标准应用程序日志从另一个数据流中分离出来,所以我以这种方式定义了一个 logback 配置。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="LOGS" value="./log" />

    <appender name="Console"
        class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            </Pattern>
        </layout>
    </appender>
    <appender name="standardFile"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS}/log.log</file>
        <encoder
            class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36}:%L - %msg%n</Pattern>
        </encoder>

        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily and when the file reaches 10 MegaBytes -->
            <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <appender name="specialFile"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS}/special</file>
        <encoder
            class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36}:%L - %msg%n</Pattern>
        </encoder>

        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily and when the file reaches 10 MegaBytes -->
            <fileNamePattern>${LOGS}/archived/special-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>
    

    <!-- Standard LOG file -->

    
    <logger name="com.app" level="debug"
        additivity="false">
        <appender-ref ref="standardFile" />
        <appender-ref ref="Console" />
    </logger>

    

    <!-- REMOVE SPECIAL-->
    <logger
        name="com.app.special" level="OFF"
        additivity="false">
        <appender-ref ref="standardFile" />
        <appender-ref ref="Console" />
    </logger>
    
    
    <!-- SPECIAL LOGGER -->
    
    <logger
        name="com.app.special" level="debug"
        >
        <appender-ref ref="specialFile" />
        <appender-ref ref="Console" />
    </logger>


</configuration>

使用此配置,我读取标准文件上的所有日志和特殊文件上的特殊日志。我只想阅读特殊文件上的特殊日志

什么是正确的配置?

标签: spring-bootlogback

解决方案


推荐阅读