• Log4Net 使用


    使用步骤:

    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="LogsLog4NetDemo_"/>                                    <!--文件名(带路径)的固定部分-->
                <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="LogsError LogsLog4NetDemo_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



  • 相关阅读:
    Codeforces Round #709 (Div. 2, based on Technocup 2021 Final Round)
    Codeforces Round #708 (Div. 2)
    Educational Codeforces Round 106 (Rated for Div. 2)
    ccf csp 202012-1
    带配额的文件系统 (带模拟)
    阔力梯的树
    Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics)
    如何获取某个网站IP地址?
    C++开发者眼中的Java关键字abstract
    Java代码中如何获文件名和行号等源码信息?
  • 原文地址:https://www.cnblogs.com/dhqy/p/13820600.html
Copyright © 2020-2023  润新知