Hi,我使用的是TCP方式,logback中配置logstash的appender,从程序直接将日志发往Logstash。
现在遇到一个问题,我使用的是LoggingEventCompositeJsonEncoder,定义了pattern。logstash接受到日志后打印到控制台,发现收集到的行号,显示为一个问号“?”。
如果在logback中添加一个输出到控制台的appender,在logstash中则又能显示出行号了。有人知道是什么原因吗?
logback-spring.xml核心配置:
<!-- 为了测试,仅打印行号 -->
<property name="PATTERN" value="%L"/>
<property name="LOGSTASH_PATTERN" value='
{
"date": "%d{yyyy.MM.dd}",
"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
"level": "%level",
"logger_name": "%c",
"line_number": "%line",
"thread_name": "%thread",
"message": "%msg",
"stack_trace": "%exception" }
'/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<!-- 本地环境-->
<springProfile name="local">
<logger name="org.springframework.web" level="debug"/>
<logger name="com.test.market.basic.dao" level="debug"/>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>127.0.0.1:4568</destination>
<writeBufferSize>32768</writeBufferSize>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone> </timestamp>
<mdc/>
<pattern>
<pattern>${LOGSTASH_PATTERN}</pattern>
</pattern>
</providers>
</encoder>
</appender>
<root level="INFO">
<!-- 解开该行,logstash中就可以打印出日志的行号,注释掉,则打印出一个问号"?" -->
<!--<appender-ref ref="CONSOLE"/>-->
<appender-ref ref="LOGSTASH"/>
</root>
</springProfile>
现在遇到一个问题,我使用的是LoggingEventCompositeJsonEncoder,定义了pattern。logstash接受到日志后打印到控制台,发现收集到的行号,显示为一个问号“?”。
如果在logback中添加一个输出到控制台的appender,在logstash中则又能显示出行号了。有人知道是什么原因吗?
logback-spring.xml核心配置:
<!-- 为了测试,仅打印行号 -->
<property name="PATTERN" value="%L"/>
<property name="LOGSTASH_PATTERN" value='
{
"date": "%d{yyyy.MM.dd}",
"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
"level": "%level",
"logger_name": "%c",
"line_number": "%line",
"thread_name": "%thread",
"message": "%msg",
"stack_trace": "%exception" }
'/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<!-- 本地环境-->
<springProfile name="local">
<logger name="org.springframework.web" level="debug"/>
<logger name="com.test.market.basic.dao" level="debug"/>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>127.0.0.1:4568</destination>
<writeBufferSize>32768</writeBufferSize>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone> </timestamp>
<mdc/>
<pattern>
<pattern>${LOGSTASH_PATTERN}</pattern>
</pattern>
</providers>
</encoder>
</appender>
<root level="INFO">
<!-- 解开该行,logstash中就可以打印出日志的行号,注释掉,则打印出一个问号"?" -->
<!--<appender-ref ref="CONSOLE"/>-->
<appender-ref ref="LOGSTASH"/>
</root>
</springProfile>
0 个回复