WinForm log4net使用

1.引入log4net.dll

2.创建log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!--Log4Net-->
  <!-- Level的级别,由高到低 -->
  <!-- None > Fatal > ERROR > WARN > DEBUG > INFO > ALL-->
  <!-- 解释:如果level是ERROR,则在cs文件里面调用log4net的info()方法,则不会写入到日志文件中-->
  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value=".\log\log_%date{yyyMMdd}.log" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <!--<datePattern value="yyyyMMddhhmmss'.log'"/>-->
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="5MB" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
        <param name="Header" value=" ----------------------header--------------------------&#xD;&#xA;" />
        <param name="Footer" value=" ----------------------footer--------------------------&#xD;&#xA;" />
      </layout>
    </appender>
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value=".\log\error_%date{yyyMMdd}.log" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <!--<datePattern value="yyyyMMddhhmmss'.log'"/>-->
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="5MB" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
        <param name="Header" value=" ----------------------header--------------------------&#xD;&#xA;" />
        <param name="Footer" value=" ----------------------footer--------------------------&#xD;&#xA;" />
      </layout>
    </appender>
    <appender name="WarnAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value=".\log\warning_%date{yyyMMdd}.log" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <!--<datePattern value="yyyyMMddhhmmss'.log'"/>-->
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="5MB" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
        <param name="Header" value=" ----------------------header--------------------------&#xD;&#xA;" />
        <param name="Footer" value=" ----------------------footer--------------------------&#xD;&#xA;" />
      </layout>
    </appender>
    <!--<root>
      <level value="All" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>-->
    <logger name="Error">
      <level value="ERROR" />
      <appender-ref ref="ErrorAppender" />
    </logger>
    <logger name="Info">
      <level value="INFO" />
      <appender-ref ref="RollingLogFileAppender" />
    </logger>
    <logger name="Warning">
      <level value="INFO" />
      <appender-ref ref="WarnAppender" />
    </logger>
  </log4net>
  <!--log4net配置end-->

  <!--private static ILog log = LogManager.GetLogger("Test");
  log.Error("错误", new Exception("发生了一个异常"));//错误
  log.Fatal("严重错误", new Exception("发生了一个致命错误"));//严重错误
  log.Info("信息"); //记录一般信息
  log.Debug("调试信息");//记录调试信息
  log.Warn("警告");//记录警告信息-->
</configuration>

3.AssemblyInfo.cs中添加如下

// 指定log4net 的配置文件
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

4.log4net.config 右键 - 属性 - 高级 

复制到输出目录 - 如果较新则复制

5. private static ILog log = LogManager.GetLogger("");

6.新建LogHelper类

using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AttachmentsExport
{
    public class LogHelper
    {
        /// <summary>
        /// 普通日志
        /// </summary>
        /// <param name="message">日志内容</param>
        public static void Info(string message)
        {
            ILog log = LogManager.GetLogger("Info");
            if (log.IsInfoEnabled)
            {
                log.Info(message);
            }
        }
        /// <summary>
        /// 错误日志带异常
        /// </summary>
        /// <param name="message">错误日志</param>
        public static void Error(string message, Exception ex)
        {
            ILog log = LogManager.GetLogger("Error");
            if (log.IsErrorEnabled)
            {
                log.Error(message, ex);
            }
        }

        /// <summary>
        /// 错误日志不带异常
        /// </summary>
        /// <param name="message">错误日志</param>
        public static void Error(string message)
        {
            ILog log = LogManager.GetLogger("Error");
            if (log.IsErrorEnabled)
            {
                log.Error(message);
            }
        }

        public static void Warning(string message)
        {
            ILog log = LogManager.GetLogger("Warning");
            if (log.IsWarnEnabled)
            {
                log.Warn(message);
            }
        }
    }
}

posted @ 2022-05-30 17:26  highlightyys  阅读(38)  评论(0编辑  收藏  举报