代码之家  ›  专栏  ›  技术社区  ›  abmv

如何通过代码启用/禁用日志记录和文件附加器存储在配置中的信息?

  •  4
  • abmv  · 技术社区  · 14 年前

    我有一个使用log4net进行日志记录的框架,我知道我们可以通过配置文件禁用或启用log4net中所需的日志记录。我想开发一些设置类,以便管理员或用户可以设置日志等。log4net中获取配置文件并通过代码更改配置文件中的设置的类等是什么?(是否有或应该使用.NET System.xml)任何代码段?

    <?xml version="1.0" encoding="utf-8" ?>
    <log4net>
    
      <root>
        <level value="ALL" />
        <!--<appender-ref ref="LogFileAppender" />-->
        <!--<appender-ref ref="ConsoleAppender" />-->
        <appender-ref ref="DEBUG-RollingLogFileAppender" />
        <appender-ref ref="Error-RollingLogFileAppender" />
      </root>
    
      <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
        <param name="File" value="log-file.txt" />
        <param name="AppendToFile" value="true" />
        <layout type="log4net.Layout.PatternLayout">
          <param name="Header" value="[Header]\r\n"/>
          <param name="Footer" value="[Footer]\r\n"/>
          <param name="ConversionPattern" value="%d [%t] %-5p %c %ndc %P{auth} - %m%n" />
        </layout>
      </appender>
    
      <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
        <layout type="log4net.Layout.PatternLayout">
          <param name="ConversionPattern" value="%d [%t] %-5p %c %ndc %P{auth} - %m%n" />
        </layout>
      </appender>
    
      <appender name="DEBUG-RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
        <param name="File" value="..\\logs\\debug" />
        <param name="AppendToFile" value="true" />
        <param name="StaticLogFileName" value="false" />
        <param name="RollingStyle" value="Composite" />
        <param name="DatePattern" value=".yyyyMMdd'.log'" />
        <param name="MaxSizeRollBackups" value="30" />
        <param name="MaximumFileSize" value="5MB" />
        <layout type="log4net.Layout.PatternLayout,log4net">
          <!--<param name="ConversionPattern" value="%d [%t] %-5p %c %ndc %P{auth} - %m%n" />-->
          <param name="ConversionPattern" value="%d [%t] %-5p - %m%n" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <!--<levelMin value="INFO" />-->
          <levelMax value="INFO" />
        </filter>
      </appender>
    
      <appender name="Error-RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
        <param name="Threshold" value="WARN"/>
        <param name="File" value="..\\logs\\errors" />
        <param name="AppendToFile" value="true" />
        <param name="StaticLogFileName" value="false" />
        <param name="RollingStyle" value="Composite" />
        <param name="DatePattern" value=".yyyyMMdd'.log'" />
        <param name="MaxSizeRollBackups" value="30" />
        <param name="MaximumFileSize" value="5MB" />
        <layout type="log4net.Layout.PatternLayout,log4net">
            <header value="&#13;&#10;" />
            <footer value="&#13;&#10;======================================================================" />
          <param name="ConversionPattern" value="%d [%t] %-5p - %m%n" />
        </layout>
      </appender>
    
    </log4net>
    
    1 回复  |  直到 11 年前
        1
  •  4
  •   Jon Skeet    14 年前

    您的问题并不完全清楚:您是试图以编程方式更改当前运行的配置,还是更改配置 文件 以编程方式?

    如果是后者,我认为您不需要log4net本身的任何东西——而且我不会特别期望它提供一个API来操作文件。相反,我使用LinqToXML(假设.NET3.5或更高版本)并直接操纵它。从表面上看,这很简单。研究配置文件格式,找出您想要对其进行的更改,然后为其编写适当的代码。您甚至不需要为此参考log4net。