我使用Using log4j 2-elasticsearch-hc appender(asyncLogger)直接将日志写入ElasticSearch。我的日志基本上是日志POJO(即。JSON)。然而;当我说Logger.info(logPojoInstance);整个示例针对名为“message”的属性进行字符串化,而不是作为键值对。请查看下面的屏幕截图中的ElasticSearch输出:x1c 0d1x
怎样才能使LogDTO以键-值的形式显示,而不是以字符串化/序列化的JSON显示在message旁边......我希望能够查询这些日志,这在这种情况下是不可能的。
我尝试了VirtualProperty方法,但由于我使用AsyncLogger,该值似乎没有设置。
<VirtualProperty name="ctxVariable" value="$${ctx:myFavouriteVariable:-notSupportedWithAsyncLogger}" dynamic="true" />
任何线索请让我知道!
同时粘贴log4j2.xml以供参考:
2条答案
按热度按时间zbdgwd5y1#
您可以将官方JSON Template Layout与
log4j2-elasticsearch-hc
结合使用。JTL是目前功能最丰富、最可定制的基于JSON的布局,可以呈现非String
消息。有关详细信息,请参阅message
事件模板解析器文档。zzwlnbp82#
目前似乎不可能:https://github.com/rfoltyns/log4j2-elasticsearch/issues/91