WinForm 使用 log4net 实现日志记录

参考

环境

软件/系统 版本 说明
Windows windows 10 专业版 22H2 64 位操作系统, 基于 x64 的处理器
Microsoft Visual Studio Community 2022 (64 位) - Current 版本 17.14.4
.NET Framework 4.8
log4net 3.1.0.0 nuget依赖库

正文

写入日志的方式有很多方式,加载 log4net 配置文件的方式也有很多,建议参考官网进行补充。

主要代码

  1. App.config 把 configSections、log4net 插入到 configuration 内。
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    	<!-- App.config 内配置 log4net 开始-->
    	<configSections>
    		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    	</configSections>
    	<log4net>
    		<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    			<file value="logs/app.log"/>
    			<appendToFile value="true"/>
    			<rollingStyle value="Date"/>
    			<datePattern value="yyyyMMdd'.log'"/>
    			<staticLogFileName value="false"/>
    			<layout type="log4net.Layout.PatternLayout">
    				<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
    			</layout>
    		</appender>
    
    		<root>
    			<level value="DEBUG"/>
    			<appender-ref ref="RollingFileAppender"/>
    		</root>
    	</log4net>
    	<!-- App.config 内配置 log4net 结束-->
    	<startup> 
    		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
    	</startup>
    </configuration>
    
  2. Program.cs 指定 log4net 的配置
    using System;
    using System.Windows.Forms;
    
    //[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    namespace WindowsFormsApp7
    {
    	internal static class Program
    	{
    		/// <summary>
    		/// 应用程序的主入口点。
    		/// </summary>
    		[STAThread]
    		static void Main()
    		{
    			Application.EnableVisualStyles();
    			Application.SetCompatibleTextRenderingDefault(false);
    
    			// 此种配置方式与 [assembly: log4net.Config.XmlConfigurator(Watch = true)] 任选一种即可
    			// 配置 log4net 为控制台输出(较为简单)
    			// BasicConfigurator.Configure();
    			// log4net 通过xml进行配置(适用生产环境)
    			//XmlConfigurator.Configure();
    
    			Application.Run(new Form1());
    		}
    	}
    }
    
    
  3. Form1.cs 使用
    using log4net;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp7
    {
    	public partial class Form1 : Form
    	{
    		// 
    		private static readonly ILog _logger = LogManager.GetLogger(typeof(Form1));
    
    		public Form1()
    		{
    			InitializeComponent();
    			_logger.Info("窗体-构造函数执行");
    		}
    	}
    }
    
    

查看输出

查看 应用程序程序\bin\Debug\logs\app.log20250710.log 日志文件内容显示如下

2025-07-10 18:11:56,559 [1] INFO  WindowsFormsApp7.Form1 - 窗体-构造函数执行
posted @ 2025-07-10 18:13  夏秋初  阅读(86)  评论(0)    收藏  举报