我通过扩展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
它取决于类型,但对于简单类型,您可以执行以下操作:
定义这样的属性:
// 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方法中实现此功能.
| 归档时间: |
|
| 查看次数: |
2040 次 |
| 最近记录: |