1

我需要用输出替换标准的 logback stacktraceorg.apache.commons.lang.exception.ExceptionUtils#getStackTrace()输出。我阅读了有关转换器的信息,但我想在不编写 java 类的情况下做同样的事情,只需编辑 logback.xml。有没有办法做到这一点?

我的 logback.xml 片段:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>

    <encoder>
        <pattern>%d %-5level %logger{0} \(%thread\) %m%ex%n</pattern>
    </encoder>
</appender>
4

1 回答 1

0

没有自定义代码:

在 logstash-logback-encoder 中使用 throwable 转换器

https://github.com/logstash/logstash-logback-encoder/tree/main/src/main/java/net/logstash/logback/stacktrace

例子:

<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <stackTrace>
            <fieldName>stacktrace</fieldName>
            <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
                <pattern>[%thread] - %msg%n%stack{1,1024,10,rootFirst}</pattern>
            </throwableConverter>
        </stackTrace>
    </encoder>
</appender>

自定义代码:

编写自己的转换器:LongMessageConverter

<conversionRule conversionWord="customConverter" converterClass="com.package.util.logging.converters.CustomMessageConverter">

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
    <pattern>%customConverter{25} [%thread] - %msg%n</pattern>
  </encoder>
</appender>
于 2021-07-12T12:21:36.973 回答