从Log4Net配置中获取值

时间:2011-02-22 16:57:35

标签: log4net appender

我通过扩展AppenderSkeleton类来实现自定义log4net appender。这很简单,任何人都可以要求并且完美地工作。

我的问题是我必须硬编码一些值,我想将它们从我的代码中删除到appender的配置。由于log4net知道它是如何配置的,我认为应该有办法向log4net询问它的配置。

我的appender看起来像这样:

<appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender">
      <MyProperty1>property</MyProperty1>
      <MyProperty2>property</MyProperty2>
      <MyProperty3>property</MyProperty3>
</appender>

如何获取MyProperty1-3的值,以便我可以在我的Appender中使用它?

提前致谢 Roalnd

1 个答案:

答案 0 :(得分:9)

这取决于类型,但对于简单类型,您可以执行以下操作:

定义如下属性:

// the value you assign to the field will be the default value for the property
private TimeSpan flushInterval = new TimeSpan(0, 5, 0);

public TimeSpan FlushInterval
{
     get { return this.flushInterval; }
     set { this.flushInterval = value; }
}

您可以配置如下:

<appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender">
    <flushInterval value="02:45:10" />
</appender>

这当然适用于string,bool,int和TimeSpan。

注意:如果您的设置需要激活某些逻辑(例如创建一个计时器),那么您可以在ActivateOptions方法中实现此功能。