如何在logback LogstashSocketAppender中更改标准字段名称?

问题描述 投票:0回答:1

在我的Spring后端:标准日志字段名称是:“message”和“level”,logback.xml文件效果很好:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="5 seconds">
    <property resource="application.properties"/>
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] <%-5level> [Backend] <%thread> &msg%n
            </Pattern>
        </encoder>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="stdout"/>
    </root>
</configuration>

问题:如何使用LogstashSocketAppender从“message”更改标准日志字段名称到“log-message”?

我已经尝试添加这个appender:

<appender name="stash" class="net.logstash.logback.appender.LogstashSocketAppender">
    <host>localhost</host>
    <port>6002</port>
    <customFields>
        {
        "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}",
        "component": "Backend",
        "log-message": "%msg",
        "log-level": "%-5level"
        }</customFields>
</appender>

但我的骄傲看起来像这样:

{
"message":"correct log message here"
"log-message":"%msg" <--- BAD VALUE
logback logstash-logback-encoder
1个回答
0
投票

我已经通过使用模式完成了这个:

<appender name="stash" class="net.logstash.logback.appender.LogstashSocketAppender">
    <host>${logstash.host}</host>
    <port>${logstash.port}</port>
    <provider class="net.logstash.logback.composite.loggingevent.LoggingEventPatternJsonProvider">
        <pattern>
            {
            "log-message": "%msg",
            "component": "Backend",
            "timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
            "log-level": "%-5level",
            "thread-id": "%thread"
            }
        </pattern>
    </provider>
</appender>

编辑:Ofcourse然后你必须在你的logstash中创建grok > match过滤器来监听这个模式。

© www.soinside.com 2019 - 2024. All rights reserved.