从Log4Net配置获取值

从Log4Net配置获取值,log4net,appender,Log4net,Appender,我通过扩展AppenderSkleton类实现了一个定制的log4net appender。这是任何人都可以要求的简单,而且工作得非常完美 我的问题是,我必须硬编码一些值,我想将它们从代码中删除到appender的配置中。因为log4net知道它是如何配置的,所以我认为应该有一种方法向log4net询问它的配置 我的appender可能看起来像这样: <appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender">

我通过扩展AppenderSkleton类实现了一个定制的log4net appender。这是任何人都可以要求的简单,而且工作得非常完美

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

我的appender可能看起来像这样:

<appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender">
      <MyProperty1>property</MyProperty1>
      <MyProperty2>property</MyProperty2>
      <MyProperty3>property</MyProperty3>
</appender>
// 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; }
}

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

提前谢谢
Roalnd取决于类型,但对于简单类型,可以执行以下操作:

定义如下所示的属性:

<appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender">
      <MyProperty1>property</MyProperty1>
      <MyProperty2>property</MyProperty2>
      <MyProperty3>property</MyProperty3>
</appender>
// 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
方法中实现