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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C#中的AdjustFileBeforeAppend方法中获取log4net config的自定义xml节点值相关的知识,希望对你有一定的参考价值。

我有log4net配置如下:

<log4net>
<appender name="TestAppender"
type="myLogging.Program+RollingFileCustomAppender" >
  <file value="C:UsersjohnDesktopmyLoggingMyTestAppender.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
    }

    // ...
}

以上是关于在C#中的AdjustFileBeforeAppend方法中获取log4net config的自定义xml节点值的主要内容,如果未能解决你的问题,请参考以下文章

在 c\c++ 中的线程和并发中推荐一本好的编程书籍 [关闭]

C中的无符号整数在java中的处理

断言与 C/C++ 中的调试有啥关系? [关闭]

C/C++:如何将数据存储在 B 树中的文件中

C/C++中的指针

C/C++在Android开发中的应用