Logback 转换规则参数化

Pio*_*otr 4 java logback slf4j spring-boot

有没有办法在 Logback 中参数化转换规则?我已经尝试添加子节点、附加属性,但我看不到这样做的方法。

<conversionRule conversionWord="boundedMsg" converterClass="com.package.util.logging.converters.LongMessageConverter">
Run Code Online (Sandbox Code Playgroud)

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

我的应用程序是在 Spring Boot 上设置的,我使用的是 Sl4J。

Sha*_*ark 7

这更多是关于 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>
Run Code Online (Sandbox Code Playgroud)

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

start 方法如下所示:

private int msgLength;

@Override
public void start() {
    msgLength = Integer.parseInt(getFirstOption());
    super.start();
}
Run Code Online (Sandbox Code Playgroud)