目前我正在使用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");
是否可以通过编程方式为不同的租户设置不同的日志级别?
2条答案
按热度按时间pcww981p1#
通过将记录器 Package 到自定义
TenantLogger
把记录器拿来根据服务中的模块和缓存,从数据库表中获取租户日志配置。
根据从数据库获得的配置,根据级别记录消息(步骤2)
如果没有为租户配置相应的级别,则可以从日志记录中跳过该消息
这需要一张单独的table
TenantLoggingConfig
其中包含如下列TenantId
,ModuleId
,LogLevel
等。您可以拥有诸如客户、订单、产品等模块。对于微服务,这很简单,因为每个微服务只包含其模块。
请分享您对此的想法,或者如果您喜欢任何其他方法。
uklbhaso2#
要以编程方式更改日志级别,请使用: