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