我想知道LoggingEvent和LoggingEventData之间的区别,为什么使用LoggingEventData,因为LoggingEventData只是LoggingEvent的可移植版本。
我正在编写自己的自定义布局。在此布局中,只有在调用GetLoggingEventData()之后才能使用LoggingEvent成员,而不调用此函数我将获取所有LoggingEvent属性的空值。你能告诉我为什么会这样吗?
class MyLayout:LayoutSkeleton
{
public override void Format (TextWriter writer, LoggingEvent loggingEvent )
{
var initObj = new InitObj(loggingEvent);
}
}
Class InitObj {
public InitObj(LoggingEveng loggingEvent) {
String xyz = loggingEvent.Properties["xyz"];
// This is null , when
// There is no call to
//loggingEvent.GetLoggingEventData();
}
}
我确实看了一下LoggingEvent中的GetLoggingEventData函数:
public LoggingEventData GetLoggingEventData()
{
return this.GetLoggingEventData(FixFlags.Partial);
}
FixFlags可能正在修复/启用loggingevent属性。 我对此并不十分肯定。
答案 0 :(得分:1)
正如LoggingEvent constructor that takes a LoggingEventData instance的文档所说:
中有一个使用示例提供此构造函数以允许创建LoggingEvent 独立于log4net框架。如果你这可能很有用 需要自定义序列化方案。