有人可以告诉我logback在哪里初始化编码器字段 OutputStreamAppender?
appender name="logstash" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>test.json</file>
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"severity": "%level"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
答案 0 :(得分:0)
每个appender都是通过ch.qos.logback.core.joran.action.AppenderAction
上的调用实例化的,AppenderAction的end()
方法在实际的appender上调用start()
对于扩展OutputStreamAppender
的appender,这涉及到OutputStreamAppender.setOutputStream()
的调用,后者又会调用OutputStreamAppender.encoderInit()
。
ConsoleAppender
,setOutputStream()
直接从start()
FileAppender
,start()
调用openFile()
然后调用setOutputStream()
因此,总而言之,Logback通过扩展encoderInit()
的任何start()
上的Appender
方法调用OutputStreamAppender
。