【发布时间】:2017-03-03 11:20:32
【问题描述】:
配置文件中提到的布局如下:
Timestamp: ${date}${newline}Title: ${event-properties:item=Title}${newline}Message: ${message}${newline}Machine: ${machinename}${newline}${newline}${LayoutFooter}
在例外情况下,我想在此布局中再添加两个属性,包括Stack Trace 和Inner 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 的 Microsoft.Practices.EnterpriseLibrary.Logging 类中具有 ExtendedProperties 属性。
【问题讨论】:
标签: asp.net-core asp.net-core-mvc .net-core nlog asp.net-core-webapi