如何在Spring Boot应用中通过logback.xml为两个附加程序设置两个不同的日志级别?

问题描述

我的logback.xml配置有问题。我希望console-appender只将信息事件写入控制台,而file-appender用调试级别写入文件。我当前的配置如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="LOG_PATH" value="applogs"/>

    <appender name="FILE_DAILY" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${LOG_PATH}/News_App_MRM.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- keep 30 days' worth of history capped at 3GB total size -->
            <maxHistory>30</maxHistory>
            <totalSizeCap>3GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>


    <root level="info">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE_DAILY"/>
    </root>

</configuration>

解决方法

您必须定义一个这样的记录器

<logger name="org.hibernate" level="INFO" additivity="false">
    <appender-ref ref="STDOUT"/>
</logger>

这样,所有来自org.hibernate的日志都将记录在INFO级别。

然后您可以为每个记录器指定一个追加器。