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构造");

浙公网安备 33010602011771号