我有log4net配置如下:
<log4net>
<appender name="TestAppender"
type="myLogging.Program+RollingFileCustomAppender" >
<file value="C:\Users\john\Desktop\myLogging\MyTestAppender.log" />
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<maxSizeRollBackups value="2"/>
<newNode value="23"/>
<maximumFileSize value="1KB"/>
<staticLogFileName value="true"/>
<datePattern value=".yyyy-MM-dd"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger{3} - %message%newline"/>
</layout>
</appender>
<root>
<level value="All" />
</root>
在这里,我在配置中添加了一个名为newNode的新xml节点。我还创建了一个自定义文件appender:
public class RollingFileCustomAppender: RollingFileAppender
{
public RollingFileByMaxAgeAppender()
: base()
{
}
protected override void AdjustFileBeforeAppend()
{
// how to access the new node value here?????????
}
}
在c#中的AdjustFileBeforeAppend方法中获取新节点值的最佳方法是什么?
将公共属性getter和setter添加到自定义RollingFileAppender
类。
此属性的名称可以在PascalCase中。
它可以是String
类型,甚至是数字,例如。 Int32
。
对于你问题中的appender,它看起来像:
public class RollingFileCustomAppender: RollingFileAppender
{
public Int32 NewNode { get; set; }
protected override void AdjustFileBeforeAppend()
{
// Do something with this.NewNode
}
// ...
}