(三)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”:
    (三)Apache log4net™ 手册 -演示_第1张图片

    项目目标框架为 .NET Framework 4.8.1

  2. 前往 Visual Studio 菜单栏的【工具】-【NuGet 包管理器】-【管理解决方案的 NuGet 程序包】:
    (三)Apache log4net™ 手册 -演示_第2张图片

  3. 在打开的标签页中切换到【浏览】页面,搜索 “Log4Net” 并选中;在右方的配置页面勾选要安装的项目,点击【安装】按钮:
    (三)Apache log4net™ 手册 -演示_第3张图片

  4. 安装完成后,可以看到解决方案资源管理器内新增了一个 package.config 文件:
    (三)Apache log4net™ 手册 -演示_第4张图片
    内容如下:
    (三)Apache log4net™ 手册 -演示_第5张图片

1.3、配置 Log4Net

  1. 完成 1.2 小节的内容后,在解决方案资源管理器内右击项目名称,点击【添加】-【新建项】。在打开的对话框中搜索找到“应用程序配置文件” C# 项,修改文件名为 log4net.config,点击【添加】:
    (三)Apache log4net™ 手册 -演示_第6张图片

  2. 在解决方案资源管理器内右击 log4net.config,点击【属性】,将“复制到输出目录”属性的值修改为“如果较新则复制”:
    (三)Apache log4net™ 手册 -演示_第7张图片

  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>
    
  4. 在解决方案资源管理器内展开项目下的 Properties 属性文件夹,可以看到下属有一个 AssemblyInfo.cs 的文件,双击打开该文件:
    (三)Apache log4net™ 手册 -演示_第8张图片

  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. 运行项目,将得到以下输出:
    (三)Apache log4net™ 手册 -演示_第9张图片

  3. 在应用程序的基目录将会生成一个名为 example.log 的日志文件,内容如下:
    (三)Apache log4net™ 手册 -演示_第10张图片

2、为 .NET 项目配置 Log4Net

2.1、先决条件

  • 一个简单的 .NET 项目(比如:使用 Visual Studio 创建 .NET 控制台应用程序)。

2.2、引用 Log4Net NuGet 包

  1. 在 2.1 小节中,笔者在解决方案 “Log4NetDemo” 中继续新建了一个 .NET 控制台项目, 项目名称为 “ConsoleApp4DotNet”。设置该项目为启动项目:
    (三)Apache log4net™ 手册 -演示_第11张图片

    目标框架为 .NET 6.0

  2. 前往 Visual Studio 菜单栏的【工具】-【NuGet 包管理器】-【管理解决方案的 NuGet 程序包】:
    (三)Apache log4net™ 手册 -演示_第12张图片

  3. 在打开的标签页中切换到【已安装】页面,选中 “Log4Net”;在右方的配置页面勾选要安装的项目,点击【安装】按钮:
    (三)Apache log4net™ 手册 -演示_第13张图片

  4. 安装完成后,在解决方案资源管理器内双击项目名称打开项目(.csproj)文件,可以看到项目文件中添加了对 Log4Net NuGet 包的引用:
    (三)Apache log4net™ 手册 -演示_第14张图片

    package.config or PackageReference?

2.3、配置 Log4Net

  1. 完成 2.2 小节的内容后,在解决方案资源管理器内右击项目名称,点击【添加】-【新建项】。在打开的对话框中搜索找到“应用程序配置文件” C# 项,修改文件名为 log4net.config,点击【添加】:
    (三)Apache log4net™ 手册 -演示_第15张图片

  2. 在解决方案资源管理器内右击 log4net.config,点击【属性】,将“复制到输出目录”属性的值修改为“如果较新则复制”:
    (三)Apache log4net™ 手册 -演示_第16张图片

  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>
    
  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. 运行项目,将得到以下输出:
    (三)Apache log4net™ 手册 -演示_第17张图片

  3. 在应用程序的基目录将会生成一个名为 example.log 的日志文件,内容如下:
    (三)Apache log4net™ 手册 -演示_第18张图片

你可能感兴趣的:(Apache,Logging,Services,log4net,.net,c#)