java - 登录配置: pattern for LoggingEventPatternJsonProvider

标签 java logback logstash-logback-encoder

我正在尝试以编程方式添加 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 配置文件中,则可以正常工作。

有什么想法吗?

最佳答案

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

在 LoggingEventPatternJsonProviderpatternProviderpatternProvider 上设置上下文解决了我的问题。

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

关于java - 登录配置: pattern for LoggingEventPatternJsonProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60083215/

相关文章:

java - 使用标记的logstash-logback-encoder错误

java - 如何将 PrettyPrintingJsonGeneratorDecorator 和 MaskingJsonGeneratorDecorator 结合在一起?

java - 成员变量的多态性。我知道这是不可能的,我不明白这个具体案例

java - JPA:如何在 save() 之前删除不必要的 SELECT?

java - p :commandLink action does not fire

java - Java 中的行缓冲是什么?

java - 如何在众多项目中指向我的项目中的一个 logback.xml 文件

java - 处理所有异常

properties - 是否必须创建多个 Logback PropertyDefiner 实现才能引入多个属性?

tcp - Logstash TCP 输入一旦出现就会检索所有过去的日志