Как изменить стандартные имена полей в logback LogstashSocketAppender? - PullRequest
0 голосов
/ 10 сентября 2018

В моем бэкэнде 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 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

1 Ответ

0 голосов
/ 10 сентября 2018

Я уже сделал это с помощью шаблона:

<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>

Редактировать: Конечно, тогда вы должны создать grok > match фильтр в своем logstash для прослушивания этого паттерна.

...