NLog 中的扩展属性

Extended properties in NLog

配置文件中提到的布局如下:

Timestamp: ${date}${newline}Title: ${event-properties:item=Title}${newline}Message: ${message}${newline}Machine: ${machinename}${newline}${newline}${LayoutFooter}

在例外情况下,我想向此布局添加另外两个属性,其中包括 Stack TraceInner Exception Message

我正在通过修改布局模式来实现上述要求:

Timestamp: ${date}${newline}Title: ${event-properties:item=Title}${newline}Message: ${message}${newline}${event-properties:item=StackTrace}${event-properties:item=InnerException}Machine: ${machinename}${newline}${newline}${LayoutFooter}

然后通过代码,

private static void WriteLog(LogEvent logEvent)
{
    var log = LogManager.GetLogger(logEvent.Logger);
    LogEventInfo logMsg = new LogEventInfo();
    logMsg.Message = logEvent.Message;
    logMsg.Level = logEvent.LogLevel;
    logMsg.Properties.Add("Title", logEvent.Title);
    if(!string.IsNullOrEmpty(logEvent.StackTrace))
    {
        logMsg.Properties.Add("StackTrace", "Stack Trace: " + logEvent.StackTrace + Environment.NewLine);
    }
    if(!string.IsNullOrEmpty(logEvent.InnerException))
    {
        logMsg.Properties.Add("InnerException", "Inner Exception: " + logEvent.InnerException + Environment.NewLine);
    }
    log.Log(logMsg);
}

按照上面的方法,如果我需要添加更多的扩展属性,我需要更改配置文件和代码。

如果是单个配置文件,这种方法还好,但如果是多个配置文件,就比较费时了。

有什么方法可以只修改代码而不修改配置文件来添加扩展属性

当我使用 Microsoft Enterprise Logging 库时,我能够实现此功能,因为它在 LogEntry class of [=17] 中具有 ExtendedProperties 属性 =].

Is there any way, through which I can add extended properties only by changing code, and no change in config file.

有一个${all-event-properties} renderer,它有多个参数如何渲染。