【问题标题】:Extended properties in NLogNLog 中的扩展属性
【发布时间】:2017-03-03 11:20:32
【问题描述】:

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

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 库时,我能够实现此功能,因为它在 LogEntryMicrosoft.Practices.EnterpriseLibrary.Logging 类中具有 ExtendedProperties 属性。

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc .net-core nlog asp.net-core-webapi


    【解决方案1】:

    有没有什么办法可以只通过修改代码添加扩展属性,不修改配置文件。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      • 2020-03-28
      相关资源
      最近更新 更多