7

我通过扩展 AppenderSkeleton 类实现了一个自定义 log4net 附加程序。它就像任何人都可以要求的那样简单并且完美地工作。

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

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

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

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

提前感谢罗兰德

4

1 回答 1

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方法中实现它。

于 2011-02-22T17:46:30.940 回答