C# Log4Net简单使用方法

log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。

使用log4net,一个很明显的好处是可以提供多种等级的记录信息,通过配置可以在开发的不同阶段处理不同的记录信息,比.NET自带的Debug/Trace两个级别要丰富的多。

一.配置文件

  (1)麻烦自行百度log4net的dll文件,然后添加引用。

如上,第一个就是Log4net。

  (2)在assemblyInfo.cs里添加下面这句:

[assembly: log4net.Config.DOMConfigurator(Watch = true)]

在app.config里添加配置信息,如下(注意格式,startup放最后):

<configuration>
   
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, 
            log4net-net-1.0"/>
  </configSections>
  
  <log4net>
    <logger name="logerror">
      <level value="Error" />
      <appender-ref ref="ErrorAppender" />
    </logger>
    <logger name="loginfo">
      <level value="INFO" />
      <appender-ref ref="InfoAppender" />
    </logger>
    <logger name="logdebug">
      <level value="DEBUG" />
      <appender-ref ref="DebugAppender" />
    </logger>
    <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\LogDebug\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="MaxFileSize" value="10240" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="&lt;调试&gt;%m 时间:%d [%t] ;%n"  />
      </layout>
    </appender>
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\LogError\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="MaxFileSize" value="10240" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="&lt;异常&gt;%m 时间:%d [%t] ;%n"  />
      </layout>
    </appender>
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\LogInfo\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n&lt;正常&gt;&lt;时间:&gt;%d %m[%t];%n"  />
      </layout>
    </appender>
  </log4net>

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>

</configuration>

configurations写的是log4net版本信息。
log4net内分别写了Error DeBug Info三个级别的配置信息,log4net内含7个级别的log信息

(1)OFF  (2)FATAL  (3)ERROR  (4)WARN  (5)INFO  (6)DEBUG  (7)ALL  (级别是从高到低)

配置信息的解释:

<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
      //日志的路径
      <param name="File" value="Log\LogDebug\" />
      //是否在文件中追加文件
      <param name="AppendToFile" value="true" />
      //最大变换数量
      <param name="MaxSizeRollBackups" value="100" />
      //文件最大大小
      <param name="MaxFileSize" value="10240" />
      //日志文件名是否为静态
      <param name="StaticLogFileName" value="false" />
      //文件名称命名
      <param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" />
      //按照文件的Data进行变换日志文件
      <param name="RollingStyle" value="Date" />
      //log输入内容(可以根据需求自行设置)
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="&lt;调试&gt;%m 时间:%d [%t] ;%n"  />
      </layout>
    </appender>

二.实例化log4net类

 public class Log4netManager
    {
        public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");

        public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");

        public static readonly log4net.ILog logdebug = log4net.LogManager.GetLogger("logdebug");

        /// <summary>
        /// 输出正常运行信息
        /// </summary>
        /// <param name="info"></param>
        public static void WriteInfo(string info)
        {

            if (loginfo.IsInfoEnabled)
            {
                loginfo.Info(info);
            }
        }

        /// <summary>
        /// 输出异常运行信息
        /// </summary>
        /// <param name="info"></param>
        public static void WriteError(string info)
        {
            if (logerror.IsErrorEnabled)
            {
                logerror.Error(info);
            }
        }

        /// <summary>
        /// 输出调试信息
        /// </summary>
        /// <param name="info"></param>
        public static void WriteDebug(string info)
        {
            if (logdebug.IsDebugEnabled)
            {
                logerror.Debug(info);
            }
        }
    }

三.输出

  public partial class MainWindow : Window
    {
      
        public MainWindow()
        {
            InitializeComponent();
            Log4netManager.WriteError("error");
            Log4netManager.WriteDebug("debug");
            Log4netManager.WriteInfo("info");
           
        }
    }

四.打开文件所在位置

即可,见到该输出文件

原文地址:https://www.cnblogs.com/Khan-Sadas/p/4961856.html