elasticsearch—使用带有ecs布局的nlog记录器,在kibana中,json对象显示为字符串,而不是多个属性

csga3l58  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(453)

我正在开发一个.NETFramework应用程序,我被要求使用kibana作为ui将日志发送到elasticsearch。为了实现标准化,我必须实现ecs(弹性公共模式)。
看看我们在ecs github上的例子,我们只需要通过以下方式实现它:

而不是发送到控制台,就像我们的例子,我把它发送到ElasticSearch

它的输出,将是一个很好的json对象。。。
也许在kibana我们会看到如下的东西( Kibana - Discover ):

看看这个,可能json对象应该被当作一个字符串来对待,所有的东西都放在 message 属性,但这不是我要找的,我希望json被划分为许多属性。
由于我是弹性堆栈的新手,我尝试在 Index Management 页面和执行手动Map message._metadata.url 不将某些属性视为字符串的一部分但不成功。
我很难找到有用的信息来解决这个问题,有人能给我一个提示吗?
更新:
我找到了房子 enableJsonLayout="true" 我们可以把目标 Nlog 这确实将json布局上的内容作为elasticsearch上的属性,这很好。

这是使用云服务器的正确方法吗?如何添加其他属性?

thigvfpy

thigvfpy1#

启用此选项时 enableJsonLayout="true" 这意味着配置的布局必须处理所有的事情。对于ecslayout,您可以在此处找到文档:
https://github.com/elastic/ecs-dotnet/tree/master/src/elastic.commonschema.nlog
默认情况下,ecslayout将所有logevent属性作为元数据包括在内。另请参见https://github.com/nlog/nlog/wiki/how-to-use-structured-logging
但您可以显式添加额外的元数据项:

<layout xsi:type="EcsLayout">
   <metadata name="MyProperty" layout="MyPropertyValue" />
</layout>

相关问题