我通过扩展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
答案 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
方法中实现此功能。