• (三)Apache log4net™ 手册 -演示


    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 文件,将其修改为以下内容并保存:

      
      <log4net>
          
          <appender name="Console" type="log4net.Appender.ConsoleAppender">
              
              <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
              layout>
          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>
              
              <level value="ALL" />
              
              <appender-ref ref="Console" />
              
              <appender-ref ref="RollingFile" />
          root>
      log4net>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
    4. 在解决方案资源管理器内展开项目下的 Properties 属性文件夹,可以看到下属有一个 AssemblyInfo.cs 的文件,双击打开该文件:
      打开 AssemblyInfo.cs

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

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

    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();
              }
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
    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 文件,将其修改为以下内容并保存:

      
      <log4net>
          
          <appender name="Console" type="log4net.Appender.ConsoleAppender">
              
              <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
              layout>
          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>
              
              <level value="ALL" />
              
              <appender-ref ref="Console" />
              
              <appender-ref ref="RollingFile" />
          root>
      log4net>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
    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("异常信息"));
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
    2. 运行项目,将得到以下输出:
      输出

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

  • 相关阅读:
    线程池原理解析
    神经网络训练图形分析,神经网络训练图形分类
    Jetpack DataBinding使用--Jetpack系列
    从单机到分布式微服务,大文件校验上传的通用解决方案
    C 不再是一种编程语言
    设计模式学习(十九):访问者模式
    网站被攻击怎么办
    欧科云链:成本与规模之辨——合规科技如何赋能香港Web3生态?
    QGraphicsView使用要点
    Java 网络编程
  • 原文地址:https://blog.csdn.net/YMGogre/article/details/133711663