如何使用 NLog Elasticsearch Target 定义自定义字段

How to define custom Fields with NLog Elasticsearch Target

我正在使用这个 Elasticsearch Nlog Target to send my logs to Elasticsearch. I want to take advantage of Elasticsearch's ability to define specific Fields in an index. The Elasticsearch Nlog Target's docs show examples of field definitions here

我想通过代码来做到这一点,我想为我记录的每条消息动态设置字段的值。

从 Elasticsearch 方面来看,我想看到这样的东西,我在其中定义并设置了两个自定义字段的值,prop1prop2:

感谢Elasticsearch NLog Target's project owners的帮助,我发现存在以下选项:

使用 NLog 的 Fluent API:

_myLogger.Info()
       .Message("your log message.")
       .Property("property1", "value1")
       .Write();

_myTarget.IncludeAllProperties=True;   // Must set on the Elasticsearch target

以下语法也是一个选项:

var myLogger = LogManager.GetCurrentClassLogger();
var eventInfo = new LogEventInfo(LogLevel.Info, MyLogger.Name, "Message");
eventInfo.Properties["CustomValue"] = "My custom string";
eventInfo.Properties["CustomDateTimeValue"] = new DateTime(2020, 10, 30, 11, 26, 50);
eventInfo.Properties.Add("CustomNumber", 42);
logger.Log(eventInfo);

_myTarget.IncludeAllProperties=True;