Logback 或 Slf4j,如何使用不同的记录器将动态名称输出到不同的日志文件

问题描述 投票:0回答:0

在java中,例如,有对象有不同的和规则的命名chat1,chat2,chat3... 他们映射到 chatlogger1、chatlogger2、chatlogger3... 他们如何将日志数据输出到名为 chatlog1、chatlog2、chatlog3 的不同日志文件... 以及诸如 RollingFileAppender

之类的 logback 特性

我希望处理logback xml配置而不是编码;

我尝试过一些方法,比如

<configuration>

  <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/${logger}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <fileNamePattern>logs/${logger}-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
      <maxFileSize>10MB</maxFileSize>
      <maxHistory>10</maxHistory>
      <totalSizeCap>100GB</totalSizeCap>
    </rollingPolicy>

    <encoder>
      <pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="INFO">
    <appender-ref ref="file"/>
  </root>
<logger name="chatlogger-*" level="info" additivity="false">
        <appender-ref ref="file"/>
    </logger>
</configuration>

和代码

Logger = LoggerFactory.getLogger("chatlogger-" + variableName );

但是没用,无法识别${logger}

关键是记录器名称是动态的,不是固定的,所以我不能在配置中预先定义每个。有什么方法可以编写通配符来解决问题吗?

java logback slf4j
© www.soinside.com 2019 - 2024. All rights reserved.