(三)Apache log4net™ 手册 -演示

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

0、引言

在开始本文之前推荐您首先阅读 Apache log4net™ 手册中有关 介绍配置 的相关内容。本文将通过实践分别为您演示如何使用 Visual Studio 2022 在 .NET Framework 项目和 .NET 项目下配置并使用 Log4Net。

1、为 .NET Framework 项目配置 Log4Net

1.1、先决条件

  • 一个简单的 .NET Framework 项目比如控制台应用(.NET Framework)

1.2、引用 Log4Net NuGet 包

  1. 1.1 小节中笔者创建了一个新的 .NET Framework 控制台项目。解决方案名称为 “Log4NetDemo”, 项目名称为 “ConsoleApp4DotNetFramework
    项目资源

    项目目标框架为 .NET Framework 4.8.1

  2. 前往 Visual Studio 菜单栏的【工具】-【NuGet 包管理器】-【管理解决方案的 NuGet 程序包】
    管理 NuGet 包

  3. 在打开的标签页中切换到【浏览】页面搜索 “Log4Net” 并选中在右方的配置页面勾选要安装的项目点击【安装】按钮
    安装 log4net NuGet 包

  4. 安装完成后可以看到解决方案资源管理器内新增了一个 package.config 文件
    新增 packages.config
    内容如下
    packages.config 文件内容

1.3、配置 Log4Net

  1. 完成 1.2 小节的内容后在解决方案资源管理器内右击项目名称点击【添加】-【新建项】。在打开的对话框中搜索找到“应用程序配置文件” C# 项修改文件名为 log4net.config点击【添加】
    添加配置文件

  2. 在解决方案资源管理器内右击 log4net.config点击【属性】将“复制到输出目录”属性的值修改为“如果较新则复制”
    修改属性

  3. 双击打开 log4net.config 文件将其修改为以下内容并保存

    <?xml version="1.0" encoding="utf-8" ?>
    <log4net>
        <!-- 定义一个控制台 appender -->
        <appender name="Console" type="log4net.Appender.ConsoleAppender">
            <!-- 日志输出格式 -->
            <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
            </layout>
        </appender>
        
        <!-- 定义一个文件 appender -->
        <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
            <!-- 保存文件的名称 -->
            <file value="example.log" />
            <appendToFile value="true" />
            <!-- 文件的编码方式 -->
            <param name="Encoding" value="UTF-8"/>
            <!-- 每个文件的大小 -->
            <maximumFileSize value="100KB" />
            <!-- 保存文件数量 -->
            <maxSizeRollBackups value="2" />
    
            <!-- 日志输出格式 -->
            <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%level %thread %logger - %message%newline" />
            </layout>
        </appender>
        
        <!-- 定义 root logger 的配置 -->
        <root>
            <!-- 定义 root logger 的日志级别 -->
            <level value="ALL" />
            <!-- 引用 Console appender -->
            <appender-ref ref="Console" />
            <!-- 引用 RollingFile appender -->
            <appender-ref ref="RollingFile" />
        </root>
    </log4net>
    
  4. 在解决方案资源管理器内展开项目下的 Properties 属性文件夹可以看到下属有一个 AssemblyInfo.cs 的文件双击打开该文件
    打开 AssemblyInfo.cs

  5. 在该文件的末尾附加如下内容并保存

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

1.4、测试 Log4Net

  1. 在解决方案资源管理器内双击打开 Program.cs将其修改为以下内容并保存

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApp4DotNetFramework
    {
        internal class Program
        {
            // 定义一个静态 logger 变量其引用名为 "Program" 的 Logger 实例
            private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
            static void Main(string[] args)
            {
                log.Debug("开始调试");
                log.Info("Entering application.");
                log.Warn("警告");
                log.Error("错误", new Exception("异常信息"));
                log.Fatal("致命错误", new Exception("异常信息"));
                Console.ReadKey();
            }
        }
    }
    
  2. 运行项目将得到以下输出
    输出

  3. 在应用程序的基目录将会生成一个名为 example.log 的日志文件内容如下
    日志文件

2、为 .NET 项目配置 Log4Net

2.1、先决条件

2.2、引用 Log4Net NuGet 包

  1. 2.1 小节中笔者在解决方案 “Log4NetDemo” 中继续新建了一个 .NET 控制台项目, 项目名称为 “ConsoleApp4DotNet”。设置该项目为启动项目:
    项目资源

    目标框架为 .NET 6.0

  2. 前往 Visual Studio 菜单栏的【工具】-【NuGet 包管理器】-【管理解决方案的 NuGet 程序包】
    管理 NuGet 包

  3. 在打开的标签页中切换到【已安装】页面选中 “Log4Net”在右方的配置页面勾选要安装的项目点击【安装】按钮
    安装 log4net NuGet 包

  4. 安装完成后在解决方案资源管理器内双击项目名称打开项目.csproj文件可以看到项目文件中添加了对 Log4Net NuGet 包的引用
    PackageReference

    package.config or PackageReference?

2.3、配置 Log4Net

  1. 完成 2.2 小节的内容后在解决方案资源管理器内右击项目名称点击【添加】-【新建项】。在打开的对话框中搜索找到“应用程序配置文件” C# 项修改文件名为 log4net.config点击【添加】
    添加配置文件

  2. 在解决方案资源管理器内右击 log4net.config点击【属性】将“复制到输出目录”属性的值修改为“如果较新则复制”
    修改属性

  3. 双击打开 log4net.config 文件将其修改为以下内容并保存

    <?xml version="1.0" encoding="utf-8" ?>
    <log4net>
        <!-- 定义一个控制台 appender -->
        <appender name="Console" type="log4net.Appender.ConsoleAppender">
            <!-- 日志输出格式 -->
            <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
            </layout>
        </appender>
        
        <!-- 定义一个文件 appender -->
        <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
            <!-- 保存文件的名称 -->
            <file value="example.log" />
            <appendToFile value="true" />
            <!-- 文件的编码方式 -->
            <param name="Encoding" value="UTF-8"/>
            <!-- 每个文件的大小 -->
            <maximumFileSize value="100KB" />
            <!-- 保存文件数量 -->
            <maxSizeRollBackups value="2" />
    
            <!-- 日志输出格式 -->
            <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%level %thread %logger - %message%newline" />
            </layout>
        </appender>
        
        <!-- 定义 root logger 的配置 -->
        <root>
            <!-- 定义 root logger 的日志级别 -->
            <level value="ALL" />
            <!-- 引用 Console appender -->
            <appender-ref ref="Console" />
            <!-- 引用 RollingFile appender -->
            <appender-ref ref="RollingFile" />
        </root>
    </log4net>
    
  4. 由于 .NET Core 项目中AssemblyInfo.cs 文件是自动生成的。所以我们无法在解决方案树内找到该文件。我们可以选择关闭自动生成参考这里手动创建 AssemblyInfo.cs参考这里以及这里最后使用 assembly-level attribute 来配置 log4net。不过还是算了让我们直接使用编程方式指定 log4net 的配置文件吧见下一节。

2.4、测试 Log4Net

  1. 在解决方案资源管理器内双击打开 Program.cs将其修改为以下内容并保存

    public class Program
    {
        // 定义一个静态 logger 变量其引用名为 "Program" 的 Logger 实例
        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
    
        static void Main(string[] args)
        {
            // 使用 XmlConfigurator 直接读取 XML 文件并使用它来配置 log4net
            log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
    
            log.Debug("开始调试");
            log.Info("Entering application.");
            log.Warn("警告");
            log.Error("错误", new Exception("异常信息"));
            log.Fatal("致命错误", new Exception("异常信息"));
        }
    }
    
  2. 运行项目将得到以下输出
    输出

  3. 在应用程序的基目录将会生成一个名为 example.log 的日志文件内容如下
    日志文件

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“(三)Apache log4net™ 手册 -演示” 的相关文章