Logback 转换规则参数化

Logback conversion rule parametrizing

Logback中有没有参数化转换规则的方法? 我已经尝试添加子节点、附加属性,但我没有找到一种方法。

<conversionRule conversionWord="boundedMsg" converterClass="com.package.util.logging.converters.LongMessageConverter">

我想添加将由 LongMessageConverter 使用的参数 class。

我的应用程序是在 Spring 启动时设置的,我正在使用 Sl4J。

这更多是关于 Logback 的问题,而不是与 Spring Boot 相关的问题。你需要做的是类似于 MDCConverter 的事情。在您的模式中,您将指定如下内容:

<conversionRule conversionWord="boundedMsg" converterClass="com.package.util.logging.converters.LongMessageConverter"/>
        
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
    <pattern>%boundedMsg{25} [%thread] - %msg%n</pattern>
  </encoder>
</appender>

25 是转换器在 start() 方法调用期间可用的选项。它被确定为第一个选项。您最终可能会将许多选项传递给转换器。这样,转换器对于您在 Logback 配置中指定的任意数量的模式都是通用的。

启动方法如下所示:

private int msgLength;

@Override
public void start() {
    msgLength = Integer.parseInt(getFirstOption());
    super.start();
}