NLog 中的扩展属性
Extended properties in NLog
配置文件中提到的布局如下:
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
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,它有多个参数如何渲染。
配置文件中提到的布局如下:
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
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,它有多个参数如何渲染。