首页 > 解决方案 > java logback 不同租户的不同日志级别

问题描述

目前我正在使用 logback MDC 来设置不同的租户。但我希望为不同的租户提供不同的日志级别。

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

    <appender name="TENANT-THREAD" class="ch.qos.logback.classic.sift.SiftingAppender">

        <discriminator>
            <key>tenantName</key>
            <defaultValue>MYAPP</defaultValue>
        </discriminator>

        <sift>

          <appender name="FILE-${tenantName}"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${logPath}/${tenantName}.log</file>

            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <Pattern>
                    %d{yyyy-MM-dd HH:mm:ss} %mdc [%thread] %level %logger{35} - %msg%n
                </Pattern>
            </encoder>
          </appender>

        </sift>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="TENANT-THREAD"/>
    </root>
</configuration>


MDC.put("tenantName", tenantName);
MDC.remove("tenantName");

是否可以以编程方式为不同的租户设置不同的日志级别?

标签: javalogginglog4jlogbackmulti-tenant

解决方案


要以编程方式更改日志级别,请使用:

Logger root = (Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
root.setLevel(Level.INFO);

Level.INFO被选中的级别


推荐阅读