使用步骤:

1. 添加 log4Net 引用

       在解决方案管理器视图中的目标项目上右键  -> 管理 NuGet 程序包;

       添加 log4Net 包,如下图所示:

 

2. 添加 Log4Net 配置文件

      添加示例配置文件 log4net.config(文件名随意),并更改该文件的属性。如下图所示:

     

      示例文件 log4net.config 具体内容,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <!-- 1. 添加 log4net 配置的节点声明代码-->
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler"/>
    </configSections>
    
    <!--2. log4net 配置的核心代码-->
    <log4net>
        <!--日志输出级别-->
        <root>
            <level value="ALL"/>
            <appender-ref ref="DebugLogFileAppender"/>
            <appender-ref ref="ErrorLogFileAppender"/>
            <appender-ref ref="ConsoleAppender"/>
        </root>

        <!--调试日志输出-->
        <appender name="DebugLogFileAppender"
                  type="log4net.Appender.RollingFileAppender">
            <StaticLogFileName value="false"/>                                    <!--动态生成文件名-->
            <file value="Logs\Log4NetDemo_"/>                                    <!--文件名(带路径)的固定部分-->
            <DatePattern value="yyyy-MM-dd'.log'"/>                                <!--文件名(带路径)的动态部分-->
            <Encoding value="utf-8"/>                                            <!--文件编码-->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>    <!--使用最小锁定模型,以允许多个进程可以写入同一个文件 -->
            <appendToFile value="true"/>                                        <!--内容是否追加到文件末尾(如果为 False 则覆盖)-->
            <RollingStyle value="Composite"/>
            <MaximumFileSize value="10MB"/>                                        <!--单个文件最大大小-->
            <MaxSizeRollBackups value="10"/>                                    <!--备份文件的个数(保留10个最近的日志,会循环覆盖)-->
            <layout type="log4net.Layout.PatternLayout">                        <!--输出格式-->
                <ConversionPattern value="Level: %-5p 
                                   %nThread ID: %t
                                   %nTime: %d
                                   %nClass: %c
                                   %nFile: %F   Line: %L
                                   %nMessage: %m
                                   %n%exception
                                   %n"/>
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <levelMin value="DEBUG" />
                <levelMax value="FATAL" />
            </filter>
        </appender>

        <!--错误日志输出-->
        <appender name="ErrorLogFileAppender"
                  type="log4net.Appender.RollingFileAppender">
            <StaticLogFileName value="false"/>                                    <!--动态生成文件名-->
            <file value="Logs\Error Logs\Log4NetDemo_Error_"/>                    <!--文件名(带路径)的固定部分-->
            <DatePattern value="yyyy-MM-dd'.log'"/>                                <!--文件名(带路径)的动态部分-->
            <Encoding value="utf-8"/>                                            <!--文件编码-->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>    <!--使用最小锁定模型,以允许多个进程可以写入同一个文件 -->
            <appendToFile value="true"/>                                        <!--内容是否追加到文件末尾(如果为 False 则覆盖)-->
            <RollingStyle value="Composite"/>
            <MaximumFileSize value="10MB"/>                                        <!--单个文件最大大小-->
            <MaxSizeRollBackups value="10"/>                                    <!--备份文件的个数(保留10个最近的日志,会循环覆盖)-->
            <layout type="log4net.Layout.PatternLayout">                        <!--输出格式-->
                <ConversionPattern value="Level: %-5p 
                                   %nThread ID: %t
                                   %nTime: %d
                                   %nClass: %c
                                   %nFile: %F   Line: %L
                                   %nMessage: %m
                                   %n%exception
                                   %n"/>
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <levelMin value="ERROR" />
                <levelMax value="FATAL" />
            </filter>
        </appender>

        <!--控制台输出-->
        <appender name="ConsoleAppender"
                  type="log4net.Appender.ColoredConsoleAppender">
            <mapping>
                <level value="ERROR"/>
                <foreColor value ="white"/>
                <backColor value ="Red,HighIntensity"/>
            </mapping>
            <mapping>
                <level value="DEBUG"/>
                <backColor value ="Green"/>
            </mapping>
            <layout type="log4net.Layout.PatternLayout">
                <ConversionPattern value="Log Level: %-5level%n%date thread[%t] %c%nMessage: %m%n%exception%n"/>
            </layout>
        </appender>
        
    </log4net>
</configuration>
View Code

 

3. 通过代码使用 Log4Net

      代码调用示例,如下所示:

using log4net;
using log4net.Config;
using System;
using System.IO;

namespace Log4NetTest
{
    class Program
    {
        static void Main(string[] args)
        {
            LogTest logTest = new LogTest();
            logTest.LogTestInfo();

            Console.ReadLine();
        }
    }

    public class LogTest
    {
        const string ConfigFileName = "Config\\Log4net.config";
        static ILog log = null;

        public LogTest()
        {
            XmlConfigurator.ConfigureAndWatch(new FileInfo(ConfigFileName));
            log = LogManager.GetLogger(this.GetType());
        }

        public void LogTestInfo()
        {
            try
            {
                int id_Int32 = 0;

                id_Int32 = Convert.ToInt32("666");
                log.Debug("id_Int32 = " + id_Int32.ToString());

                id_Int32 = Convert.ToInt32("666a");
                log.Debug("id_Int32 = " + id_Int32.ToString());
            }
            catch (Exception e1)
            {
                log.Error(e1.Message, e1);
            }
        }
    }
}
View Code

 



 

posted on 2020-10-15 15:02  青叶煮酒  阅读(205)  评论(0编辑  收藏  举报