我正在尝试以编程方式添加 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/