Java Logback的XML配置中的问题
我正试图通过Java Logback的XML配置中的问题,java,logback,spring-logback,logstash-logback-encoder,Java,Logback,Spring Logback,Logstash Logback Encoder,我正试图通过logback spring.xml配置LogstashTcpSocketAppender。当我将行添加到LogstashEncoder时,我得到一个错误错误是:“weblogic.application.ModuleException:java.lang.IllegalStateException:Logback配置错误检测到:ch.qos.Logback.core.joran.spi中的错误。Interpreter@51:25-没有适用于[stackTrace]的操作,当前元素路
logback spring.xml
配置LogstashTcpSocketAppender
。当我将行
添加到LogstashEncoder
时,我得到一个错误错误是:“weblogic.application.ModuleException:java.lang.IllegalStateException:Logback配置错误检测到:ch.qos.Logback.core.joran.spi中的错误。Interpreter@51:25-没有适用于[stackTrace]的操作,当前元素路径为[[configuration][appender][encoder][stackTrace]]
。如果我删除stackTrace
,只保留
就可以了。非常感谢您的帮助
logbackspring.xml
<appender name="LOGSTASH"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${LOGSTASH_HOST}:${LOGSTASH_PORT}</destination>
<encoder charset="UTF-8"
class="net.logstash.logback.encoder.LogstashEncoder">
<stackTrace>
<fieldName>stackTrace</fieldName>
<throwableConverter
class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
<rootCauseFirst>true</rootCauseFirst>
</throwableConverter>
</stackTrace>
</encoder>
</appender>
<appender name="ASYNC_LOGSTASH"
class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="LOGSTASH"/>
</appender>
我认为
需要在编码器的
元素中
试一试
或按如下方式直接使用:
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
<maxDepthPerThrowable>30</maxDepthPerThrowable>
<maxLength>2048</maxLength>
<shortenedClassNameLength>20</shortenedClassNameLength>
<exclude>sun\.reflect\..*\.invoke.*</exclude>
<exclude>net\.sf\.cglib\.proxy\.MethodProxy\.invoke</exclude>
<evaluator class="myorg.MyCustomEvaluator"/>
<rootCauseFirst>true</rootCauseFirst>
<inlineHash>true</inlineHash>
</throwableConverter>
</encoder>
30
2048
20
sun\.reflect\..*\.调用*
net\.sf\.cglib\.proxy\.MethodProxy\.invoke
真的
真的
是的。我认为,如果我们正在使用,我们必须将其包装在内部,否则我们可以直接使用以下内容进行操作:。。。。
<appender name="LOGSTASH"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${LOGSTASH_HOST}:${LOGSTASH_PORT}</destination>
<encoder charset="UTF-8"
class="net.logstash.logback.encoder.LogstashEncoder">
<providers>
<stackTrace>
<fieldName>stackTrace</fieldName>
<throwableConverter
class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
<rootCauseFirst>true</rootCauseFirst>
</throwableConverter>
</stackTrace>
</providers>
</encoder>
</appender>
<appender name="ASYNC_LOGSTASH"
class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="LOGSTASH"/>
</appender>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
<maxDepthPerThrowable>30</maxDepthPerThrowable>
<maxLength>2048</maxLength>
<shortenedClassNameLength>20</shortenedClassNameLength>
<exclude>sun\.reflect\..*\.invoke.*</exclude>
<exclude>net\.sf\.cglib\.proxy\.MethodProxy\.invoke</exclude>
<evaluator class="myorg.MyCustomEvaluator"/>
<rootCauseFirst>true</rootCauseFirst>
<inlineHash>true</inlineHash>
</throwableConverter>
</encoder>