使用 nohup 或 disown 如果你要让某个进程运行在后台。

Logstash收集日志获取不到行号

Logstash | 作者 elastic_boy | 发布于2018年03月29日 | 阅读数:6486

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>
 
 
 
已邀请:

要回复问题请先登录注册