Конфигурация обратной связи: шаблон для LoggingEventPatternJsonProvider - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь программно добавить LogstashUdpSocketAppender и не могу создать макет с рабочим шаблоном

private Layout<ILoggingEvent> getLayout() {

    LoggingEventCompositeJsonLayout newLayout = new LoggingEventCompositeJsonLayout();

    LoggingEventPatternJsonProvider patternProvider = new LoggingEventPatternJsonProvider();
    patternProvider.setPattern("{ \"field1\":\"value\" , \"message\":\"%message\"}");

    JsonProviders<ILoggingEvent> providers = new JsonProviders<ILoggingEvent>();        
    providers.addProvider(patternProvider);

    newLayout.setLineSeparator("SYSTEM");
    newLayout.setProviders(providers);

    return newLayout;

}

Но это не работает, выводит

{"field1": "value", "message": "% PARSER_ERROR [message]"}

Если поместить тот же шаблон в файл конфигурации XML, он работает нормально.

Есть идеи?

1 Ответ

0 голосов
/ 06 февраля 2020

https://github.com/logstash/logstash-logback-encoder/issues/388

Установка контекста в LoggingEventPatternJsonProvider patternProvider patternProvider исправила мою проблему.

patternProvider.setContext(ContextSelectorStaticBinder.getSingleton().getContextSelector().getDefaultLoggerContext());
...