Luo Hao

logback不同类的日志打印在不同的文件中

Rehoni / 2024-06-12


定义两个 appender,分别命名为 “CLASS1_FILE” 和 “CLASS2_FILE”。每个appender会将日志输出到指定的文件中,这里分别是 logs/class1.log 和 logs/class2.log。

定义两个 logger,分别对应 com.example.Class1 和 com.example.Class2 类。这两个 logger 的日志级别都设置为 “info”,并将日志输出到对应的 appender 中。additivity=“false” 的设置是为了防止日志被父 logger(在这里是 root logger)也处理。

最后,root logger 设置为只处理 “error” 级别以上的日志,它的日志输出到两个 appender 中。

示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="CLASS1_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/class1.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="CLASS2_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/class2.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.example.Class1" level="info" additivity="false">
        <appender-ref ref="CLASS1_FILE" />
    </logger>

    <logger name="com.example.Class2" level="info" additivity="false">
        <appender-ref ref="CLASS2_FILE" />
    </logger>

    <root level="error">
        <appender-ref ref="CLASS1_FILE" />
        <appender-ref ref="CLASS2_FILE" />
    </root>
</configuration>