微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法在不创建 Java 类的情况下在 logback.xml 中指定自定义转换器?

如何解决有没有办法在不创建 Java 类的情况下在 logback.xml 中指定自定义转换器?

我需要用 org.apache.commons.lang.exception.ExceptionUtils#getStackTrace() 输出替换标准的 logback 堆栈跟踪输出。我读过转换器,但我想在不编写 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>

解决方法

无自定义代码:

在 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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。