什么是LoggingEventData?应该如何以及在何处使用?

时间:2014-07-22 19:01:39

标签: log4net

我想知道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属性。 我对此并不十分肯定。

1 个答案:

答案 0 :(得分:1)

正如LoggingEvent constructor that takes a LoggingEventData instance的文档所说:

  

提供此构造函数以允许创建LoggingEvent   独立于log4net框架。如果你这可能很有用   需要自定义序列化方案。

Azure Table Storage appender

中有一个使用示例