WinForm项目引入日志

NUGET安装包log4net

Properties/AssemblyInfo.cs尾部添加代码

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

 

根目录下添加log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<configSections>
		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
	</configSections>
	<log4net>
		<root>
		</root>
		<logger name="Error">
			<level value="ALL" />
			<appender-ref ref="ErrorAppender" />
		</logger>
		<logger name="InfoLog">
			<level value="ALL" />
			<appender-ref ref="InfoAppender" />
		</logger>
		<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender,log4net" >
			<param name="File" type="" value="Log/Error" />
			<param name="AppendToFile" value="true" />
			<param name="RollingStyle" value="Date" />
			<param name="DatePattern" value="yyyyMMdd".txt"" />
			<param name="StaticLogFileName" value="false" />
			<layout type="log4net.Layout.PatternLayout,log4net">
				<param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
			</layout>
		</appender>
		<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender,log4net" >
			<param name="File" type="" value="Log/Info" />
			<param name="AppendToFile" value="true" />
			<param name="RollingStyle" value="Date" />
			<param name="DatePattern" value="yyyyMMdd".txt"" />
			<param name="StaticLogFileName" value="false" />
			<layout type="log4net.Layout.PatternLayout,log4net">
				<param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
			</layout>
		</appender>
	</log4net>
</configuration>

 

修改Program.cs

using DemoRsaHy1.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DemoRsaHy1
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            log4net.Config.XmlConfigurator.Configure();//初始化log4net
            BindExceptionHandler();//绑定程序中的异常处理(统一异常处理)


            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

        #region 统一异常处理
        /// <summary>
        /// 绑定程序中的异常处理
        /// </summary>
        private static void BindExceptionHandler()
        {
            //设置应用程序处理异常方式:ThreadException处理
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            //处理UI线程异常
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            //处理未捕获的异常
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

        }
        /// <summary>
        /// 处理UI线程异常
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            LogHelper.Error(e.Exception.Message);
        }
        /// <summary>
        /// 处理未捕获的异常
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {

            Exception ex = e.ExceptionObject as Exception;
            if (ex != null)
            {
                LogHelper.Error(ex.Message);
            }
        }
        #endregion
    }
}

 

日志工具类(LogHelper.cs)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ToolUtils
{
    public class LogHelper
    {
        public static readonly log4net.ILog logInfo = log4net.LogManager.GetLogger("InfoLog");
        public static readonly log4net.ILog logError = log4net.LogManager.GetLogger("Error");
        /// <summary>
        /// 普通日志
        /// </summary>
        /// <param name="message">日志内容</param>
        public static void Info(string message)
        {
            if (logInfo.IsInfoEnabled)
            {
                logInfo.Info(message);
            }
        }
        /// <summary>
        /// 错误日志
        /// </summary>
        /// <param name="message">错误日志</param>
        public static void Error(string message)
        {
            if (logError.IsErrorEnabled)
            {
                logError.Error(message);
            }
        }
    }
}

  

打印日志

LogHelper.Info("Form1构造");

  

 

posted @ 2023-07-14 09:14  牛大胆V5  阅读(32)  评论(0)    收藏  举报