从Log4Net配置中获取值

Rol*_*and 7 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>
Run Code Online (Sandbox Code Playgroud)

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

在此先感谢Roalnd

Ste*_*gli 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; }
}
Run Code Online (Sandbox Code Playgroud)

您可以配置如下:

<appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender">
    <flushInterval value="02:45:10" />
</appender>
Run Code Online (Sandbox Code Playgroud)

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

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