我正在开发一个.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上的属性,这很好。
这是使用云服务器的正确方法吗?如何添加其他属性?
1条答案
按热度按时间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
但您可以显式添加额外的元数据项: