在C#中的AdjustFileBeforeAppend方法中获取log4net config的自定义xml节点值

问题描述 投票:0回答:1

我有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方法中获取新节点值的最佳方法是什么?

c# logging configuration log4net configuration-files
1个回答
0
投票

将公共属性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
    }

    // ...
}
© www.soinside.com 2019 - 2024. All rights reserved.