Log4net使用

1.引用log4net.dll动态链接库文件,点击引用-》右键-》管理NuGet程序包,点击搜索log4,出现如图的安装程序后,点击安装,即引用log4net.dll成功

2.添加Log4net.config配置文件,名字可以根据自己需要命名,如app.config,ddd.config等

3.设置新建的配置文件Log4net.config的属性,复制到输出目录为:始终复制或如果较新则复制,这样设置可以程序能够识别自定义命名的配置文件

4.配置新建的配置文件,具体的说明请自行百度

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>


    <!-- 控制台输出日志,第一种方式-->
    <!--
    <logger name="Info_Console">
      <level value="INFO"></level>
      <appender-ref ref="InfoLog_Console" />
    </logger>
     <logger name="Warn_Console">
      <level value="WARN"></level>
      <appender-ref ref="WarnLog_Console" />
    </logger>
    <logger name="Error_Console">
      <level value="ERROR"></level>
      <appender-ref ref="ErrorLog_Console" />
    </logger>
    <logger name="Debug_Console">
      <level value="DEBUG"></level>
      <appender-ref ref="DebugLog_Console" />
    </logger>
    <logger name="Fatal_Console" >
      <level value="FATAL"></level>
      <appender-ref ref="FatalLog_Console" />
    </logger>
    -->
    <!-- 控制台输出日志,第二种方式-->
    <logger name="Console_Log">
      <level value="ALL"></level>
      <appender-ref ref="InfoLog_Console" />
      <appender-ref ref="WarnLog_Console" />
      <appender-ref ref="ErrorLog_Console" />
      <appender-ref ref="DebugLog_Console" />
      <appender-ref ref="FatalLog_Console" />
    </logger>
    <appender name="InfoLog_Console" type="log4net.Appender.ColoredConsoleAppender">
      <!-- 设置不同级别控制台显示的不同颜色 -->
      <mapping>
        <level value="INFO" />
        <!--<foreColor value="Red, HighIntensity" />-->
        <!--<backColor value="Red,HighIntensity"/>-->
      </mapping>
      <!-- 记录的格式。 -->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n================
                                  %n日志时间:%d
                                  %n执行时间:%r
                                  %n日志级别:%-5p 
                                  %n日志对象:%c 
                                  %n日志行号:%L
                                  %n日志线程:%t
                                  %n日志内容:%m  
                                  %n==============="/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <!-- 控制输出日志的级别范围 -->
        <param name="LevelMin" value="INFO" />
        <param name="LevelMax" value="INFO" />
      </filter>
    </appender>
    <appender name="WarnLog_Console" type="log4net.Appender.ColoredConsoleAppender">
      <!-- 设置不同级别控制台显示的不同颜色 -->
      <mapping>
        <level value="WARN" />
        <!--<foreColor value="Red, HighIntensity" />-->
        <!--<backColor value="Red,HighIntensity"/>-->
      </mapping>
      <!-- 记录的格式。 -->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n================
                                  %n日志时间:%d
                                  %n执行时间:%r
                                  %n日志级别:%-5p 
                                  %n日志对象:%c 
                                  %n日志行号:%L
                                  %n日志线程:%t
                                  %n日志内容:%m  
                                  %n==============="/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <!-- 控制输出日志的级别范围 -->
        <param name="LevelMin" value="WARN" />
        <param name="LevelMax" value="WARN" />
      </filter>
    </appender>
    <appender name="ErrorLog_Console" type="log4net.Appender.ColoredConsoleAppender">
      <!-- 设置不同级别控制台显示的不同颜色 -->
      <mapping>
        <level value="ERROR" />
        <!--<foreColor value="Red, HighIntensity" />-->
        <!--<backColor value="Red,HighIntensity"/>-->
      </mapping>
      <!-- 记录的格式。 -->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n================
                                  %n日志时间:%d
                                  %n执行时间:%r
                                  %n日志级别:%-5p 
                                  %n日志对象:%c 
                                  %n日志行号:%L
                                  %n日志线程:%t
                                  %n日志内容:%m  
                                  %n==============="/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <!-- 控制输出日志的级别范围 -->
        <param name="LevelMin" value="ERROR" />
        <param name="LevelMax" value="ERROR" />
      </filter>
    </appender>
    <appender name="DebugLog_Console" type="log4net.Appender.ColoredConsoleAppender">
      <!-- 设置不同级别控制台显示的不同颜色 -->
      <mapping>
        <level value="DEBUG" />
        <!--<foreColor value="Red, HighIntensity" />-->
        <!--<backColor value="Red,HighIntensity"/>-->
      </mapping>
      <!-- 记录的格式。 -->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n================
                                  %n日志时间:%d
                                  %n执行时间:%r
                                  %n日志级别:%-5p 
                                  %n日志对象:%c 
                                  %n日志行号:%L
                                  %n日志线程:%t
                                  %n日志内容:%m  
                                  %n==============="/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <!-- 控制输出日志的级别范围 -->
        <param name="LevelMin" value="DEBUG" />
        <param name="LevelMax" value="DEBUG" />
      </filter>
    </appender>
    <appender name="FatalLog_Console" type="log4net.Appender.ColoredConsoleAppender">
      <!-- 设置不同级别控制台显示的不同颜色 -->
      <mapping>
        <level value="FATAL" />
        <!--<foreColor value="Red, HighIntensity" />-->
        <!--<backColor value="Red,HighIntensity"/>-->
      </mapping>
      <!-- 记录的格式。 -->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n================
                                  %n日志时间:%d
                                  %n执行时间:%r
                                  %n日志级别:%-5p 
                                  %n日志对象:%c 
                                  %n日志行号:%L
                                  %n日志线程:%t
                                  %n日志内容:%m  
                                  %n==============="/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <!-- 控制输出日志的级别范围 -->
        <param name="LevelMin" value="FATAL" />
        <param name="LevelMax" value="FATAL" />
      </filter>
    </appender>


    <!--写入日志文件配置,第一种方式-->
    <!--
     <logger name="Info_Write"> 
      <level value="INFO"></level>
      <appender-ref ref="InfoLog_Write" />
    </logger>
    <logger name="Warn_Write">
      <level value="WARN"></level>
      <appender-ref ref="WarnLog_Write" />
    </logger>
    <logger name="Error_Write">
      <level value="ERROR"></level>
      <appender-ref ref="ErrorLog_Write" />
    </logger>
    <logger name="Debug_Write">
      <level value="DEBUG"></level>
      <appender-ref ref="DebugLog_Write" />
    </logger>
    <logger name="Fatal_Write">
      <level value="FATAL"></level>
      <appender-ref ref="FatalLog_Write" />
    </logger>
    
    <logger name="Fatal_Write">
      <level value="Fatal"></level>
      <appender-ref ref="FatalLog_Write" />
    </logger>
    -->
    <!--写入日志文件配置,第二种方式-->
    <logger name="RollingFileAppender">
      <level value="ALL"></level>
      <appender-ref ref="InfoLog_Write" />
      <appender-ref ref="WarnLog_Write" />
      <appender-ref ref="ErrorLog_Write" />
      <appender-ref ref="DebugLog_Write" />
      <appender-ref ref="FatalLog_Write" />
    </logger>

    <!--Info_Write日志配置-->
    <appender name="InfoLog_Write" type="log4net.Appender.RollingFileAppender">
      <!--Info保存路径-->
      <param name="File" value="Logs\\Info\\" />
      <!--是否追加到文件-->
      <param name="AppendToFile" value="true" />
      <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
      <param name="MaxSizeRollBackups" value="100" />
      <param name="MaxFileSize" value="10240" />
      <Encoding value="UTF-8" />
      <!--是否只写到一个文件中-->
      <param name="StaticLogFileName" value="false" />
      <!--Info日志名-->
      <param name="DatePattern" value="yyyyMMdd_HHmmss_&quot;Info&quot;&quot;.log&quot;" />
      <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <!--Log内容-->
        <conversionPattern value="%n================
                                  %n日志时间:%d
                                  %n执行时间:%r
                                  %n日志级别:%-5p 
                                  %n日志对象:%c 
                                  %n日志行号:%L
                                  %n日志线程:%t
                                  %n日志内容:%m  
                                  %n==============="/>
      </layout>
      <!--本文件记录日志 级别区间-->
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="INFO" />
      </filter>
    </appender>

    <!--Warn_Write日志配置-->
    <appender name="WarnLog_Write" type="log4net.Appender.RollingFileAppender">
      <!--Warn保存路径-->
      <param name="File" value="Logs\\Warn\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <Encoding value="UTF-8" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <!--Warn日志名-->
      <param name="DatePattern" value="yyyyMMdd_HHmmss_&quot;Warn&quot;&quot;.log&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <!--Log内容-->
        <conversionPattern value="%n================
                                  %n日志时间:%d
                                  %n执行时间:%r
                                  %n日志级别:%-5p 
                                  %n日志对象:%c 
                                  %n日志行号:%L
                                  %n日志线程:%t
                                  %n日志内容:%m  
                                  %n==============="/>
      </layout>
      <!--本文件记录日志 级别区间-->
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="WARN" />
        <levelMax value="WARN" />
      </filter>
    </appender>

    <!--Error_Write日志配置-->
    <appender name="ErrorLog_Write" type="log4net.Appender.RollingFileAppender">
      <!--Error保存路径-->
      <param name="File" value="Logs\\Error\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <Encoding value="UTF-8" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <!--Error日志名-->
      <param name="DatePattern" value="yyyyMMdd_HHmmss_&quot;Error&quot;&quot;.log&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <!--Log内容-->
        <conversionPattern value="%n================
                                  %n日志时间:%d
                                  %n执行时间:%r
                                  %n日志级别:%-5p 
                                  %n日志对象:%c 
                                  %n日志行号:%L
                                  %n日志线程:%t
                                  %n日志内容:%m  
                                  %n==============="/>
      </layout>
      <!--本文件记录日志 级别区间-->
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="ERROR" />
      </filter>
    </appender>

    <!--Debug_Write日志配置-->
    <appender name="DebugLog_Write" type="log4net.Appender.RollingFileAppender">
      <!--Debug保存路径-->
      <param name="File" value="Logs\\Debug\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <Encoding value="UTF-8" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <!--Debug日志名-->
      <param name="DatePattern" value="yyyyMMdd_HHmmss_&quot;Debug&quot;&quot;.log&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <!--Log内容-->
        <conversionPattern value="%n================
                                  %n日志时间:%d
                                  %n执行时间:%r
                                  %n日志级别:%-5p 
                                  %n日志对象:%c 
                                  %n日志行号:%L
                                  %n日志线程:%t
                                  %n日志内容:%m  
                                  %n==============="/>
      </layout>
      <!--本文件记录日志 级别区间-->
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="DEBUG" />
        <levelMax value="DEBUG" />
      </filter>
    </appender>

    <!--Fatal_Write日志配置-->
    <appender name="FatalLog_Write" type="log4net.Appender.RollingFileAppender">
      <!--Fatal保存路径-->
      <param name="File" value="Logs\\Fatal\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <Encoding value="UTF-8" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <!--Fatal日志名-->
      <param name="DatePattern" value="yyyyMMdd_HHmmss_&quot;Fatal&quot;&quot;.log&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <!--Log内容-->
        <conversionPattern value="%n================
                                  %n日志时间:%d
                                  %n执行时间:%r
                                  %n日志级别:%-5p 
                                  %n日志对象:%c 
                                  %n日志行号:%L
                                  %n日志线程:%t
                                  %n日志内容:%m  
                                  %n==============="/>
      </layout>
      <!--本文件记录日志 级别区间-->
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="FATAL" />
        <levelMax value="FATAL" />
      </filter>
    </appender>
  </log4net>
</configuration>

5.在AssemblyInfo.cs文件中添加一行

//自定义配置文件 ConfigFile :配置名;Watch:监听
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4net.config", Watch = true)]

其中,CofigFile属性值为自己命名的配置文件

6.添加日志操作类

/// ***********************************************************************
///
/// =================================
/// 创 建 者    :congz
/// 创建日期    :2019/7/15 9:52:17
/// 邮箱        :335134701@qq.com
/// =================================
/// 项目名称    :test
/// 项目描述    :
/// 文件名称    :LogHelper.cs
/// 类 名 称    :LogHelper
/// 类 描 述    :
/// 所在的域    :ZC-PC
/// 命名空间    :test
/// 机器名称    :ZC-PC
/// CLR 版本    :4.0.30319.42000
/// 版 本 号    :v1.0.0.0
/// =================================
/// 修改者      :
/// 修改日期    :
/// 修改内容    :
/// 修改版本    :v1.0.0.0
/// =================================
///
/// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;

namespace test
{
    class LogHelper
    {
        /*控制台输出日志,第一种方式*/
        //public static readonly ILog infoLog_Console = LogManager.GetLogger("Info_Console");
        /*控制台输出日志,第二种方式*/
        public static readonly ILog console_Log = LogManager.GetLogger("Console_Log");
        /*写入日志文件配置,第一种方式*/
        /*
        public static readonly ILog infoLog_Write = LogManager.GetLogger("Info_Write");
        public static readonly ILog warnLog_Write = LogManager.GetLogger("Warn_Write");
        public static readonly ILog errorLog_Write = LogManager.GetLogger("Error_Write");
        public static readonly ILog debugLog_Write = LogManager.GetLogger("Debug_Write");
        public static readonly ILog fatalLog_Write = LogManager.GetLogger("Fatal_Write");
        /// <summary>
        /// 正常日志输出写入文本方法
        /// </summary>
        /// <param name="message"></param>
        /// <param name="args"></param>
        public static void WriteInfoLog(string message, params object[] args)
        {
            if (infoLog_Write.IsInfoEnabled)
            {
                infoLog_Write.InfoFormat(message, args);
            }
        }
        /// <summary>
        /// 警告日志输出写入文本方法
        /// </summary>
        /// <param name="message"></param>
        /// <param name="args"></param>
        public static void WriteWarnLog(string message, params object[] args)
        {
            if (warnLog_Write.IsWarnEnabled)
            {
                warnLog_Write.WarnFormat(message, args);
            }
        }
        /// <summary>
        /// 错误日志输出写入文本方法
        /// </summary>
        /// <param name="message"></param>
        /// <param name="args"></param>
        public static void WriteErrorLog(string message, params object[] args)
        {
            if (errorLog_Write.IsErrorEnabled)
            {
                errorLog_Write.ErrorFormat(message, args);
            }
        }
        /// <summary>
        /// 调试日志输出写入文本方法
        /// </summary>
        /// <param name="message"></param>
        /// <param name="args"></param>
        public static void WriteDebugLog(string message, params object[] args)
        {
            if (debugLog_Write.IsDebugEnabled)
            {
                debugLog_Write.DebugFormat(message, args);
            }
        }
        /// <summary>
        /// 严重错误日志输出写入文本方法
        /// </summary>
        /// <param name="message"></param>
        /// <param name="args"></param>
        public static void WriteFatalLog(string message, params object[] args)
        {
            if (fatalLog_Write.IsFatalEnabled)
            {
                fatalLog_Write.FatalFormat(message, args);
            }
        }
        */
        /*写入日志文件配置,第二种方式*/
        public static readonly ILog rollingFileAppender = LogManager.GetLogger("RollingFileAppender");
        /// <summary>
        /// 正常日志输出写入文本方法
        /// </summary>
        /// <param name="message"></param>
        /// <param name="args"></param>
        public static void WriteInfoLog(string message, params object[] args)
        {
            if (rollingFileAppender.IsInfoEnabled)
            {
                rollingFileAppender.InfoFormat(message, args);
            }
        }
        /// <summary>
        /// 警告日志输出写入文本方法
        /// </summary>
        /// <param name="message"></param>
        /// <param name="args"></param>
        public static void WriteWarnLog(string message, params object[] args)
        {
            if (rollingFileAppender.IsWarnEnabled)
            {
                rollingFileAppender.WarnFormat(message, args);
            }
        }
        /// <summary>
        /// 错误日志输出写入文本方法
        /// </summary>
        /// <param name="message"></param>
        /// <param name="args"></param>
        public static void WriteErrorLog(string message, params object[] args)
        {
            if (rollingFileAppender.IsErrorEnabled)
            {
                rollingFileAppender.ErrorFormat(message, args);
            }
        }
        /// <summary>
        /// 调试日志输出写入文本方法
        /// </summary>
        /// <param name="message"></param>
        /// <param name="args"></param>
        public static void WriteDebugLog(string message, params object[] args)
        {
            if (rollingFileAppender.IsDebugEnabled)
            {
                rollingFileAppender.DebugFormat(message, args);
            }
        }
        /// <summary>
        /// 严重错误日志输出写入文本方法
        /// </summary>
        /// <param name="message"></param>
        /// <param name="args"></param>
        public static void WriteFatalLog(string message, params object[] args)
        {
            if (rollingFileAppender.IsFatalEnabled)
            {
                rollingFileAppender.FatalFormat(message, args);
            }
        }
    }
}

7.使用及测试效果

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace test
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            LogHelper.WriteInfoLog("11111111111111");
            LogHelper.WriteWarnLog("11111111111111");
            LogHelper.WriteDebugLog("11111111111111");
            LogHelper.WriteErrorLog("11111111111111");
            LogHelper.WriteFatalLog("11111111111111");
            /*控制台输出日志,第一种方式*/
            //LogHelper.infoLog_Console.InfoFormat("11111111111111111");
            /*控制台输出日志,第二种方式*/
            LogHelper.console_Log.InfoFormat("11111111111111");
            Application.Run(new Form1());
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值