NLog Elasticsearch 集成@timestamp 在 ES 中工作错误(提前 2 小时)

NLog Elasticsearch integration @timestamp works wrong(2 hours early) in ES

我正在将日志从 NLog 发送到 ElasticSearch。所以,当我在 ElasticSearch 部分看到时,我看到 @timestamp 显示错误,它提前 2 小时显示。

我看到默认 @timestamp 工作错误,我在 NLog.config 中添加了我的时间,但是当我检查 Elasticsearch 时,我的时间现在工作正常,但它似乎是文本格式,我希望是日期格式。

在 NLog.config 文件中:

    <target xsi:type="BufferingWrapper" name="ElasticSearch"
        flushTimeout="5000">
  <target xsi:type="ElasticSearch" 
          index = "logstash-${date:format=yyyy-MM-dd}"           
          uri = "http://localhost:9200/"
          includeAllProperties ="true">
    <field name="host" layout="${machinename}"/>
    <field name="message" layout="${message}"/>
    <field name="src" layout="${logger}"/>
    <field name="time" layout="${longdate}"/>
   </target>
  </target>

为什么时间好像是文本格式?如何更改日期格式?

里面有什么方法吗 NLog.config 我可以更改 @timestamp 在 ElasticSearch 中使用默认值的字段。

对于 ElasticSearch,日期应该是 UTC,

所以使用

${longdate:universalTime=true}

我添加了自己的字段时间戳,它对我有用:

<field name="timeStamp" layout="${date:universalTime=true:format=yyyy-MM-ddTHH\:mm\:ss.fffZ}"/>

完整目标配置:

<target name="elastic" xsi:type="BufferingWrapper" flushTimeout="5000">
  <target xsi:type="ElasticSearch" layout="${message}"
          uri="http://x.y.z.i:9200"
          index="log-${date:format=yyyy.MM.dd}"
          documentType="logEvent">
    <field name="hostName" layout="${machinename}"/>
    <field name="timeStamp" layout="${date:universalTime=true:format=yyyy-MM-ddTHH\:mm\:ss.fffZ}"/>
    <field name="loggerName" layout="${logger}"/>
  </target>
</target>

我们的 Elastic Search 版本是 7.12.0