【问题标题】:Is there a way to specify custom converter inside logback.xml without creating Java class?有没有办法在 logback.xml 中指定自定义转换器而不创建 Java 类?
【发布时间】:2021-09-21 14:34:07
【问题描述】:

我需要用org.apache.commons.lang.exception.ExceptionUtils#getStackTrace() 输出替换标准的logback stacktrace 输出。我阅读了有关转换器的信息,但我想在不编写 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>

【问题讨论】:

    标签: java logback logback-classic


    【解决方案1】:

    没有自定义代码:

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

    【讨论】:

    • 谢谢,但是没有办法添加lib。我需要使用 ExceptionUtils#getStackTrace 因为它显示导致 ORA 错误的 SQL 查询。
    • 抓住它,然后打印任何你想要的东西。或者 logger.error("遇到异常", exceptionHere),应该在你的日志中显示堆栈跟踪...*所有堆栈跟踪。
    猜你喜欢
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 2014-08-30
    • 2011-04-10
    相关资源
    最近更新 更多