public partial class App : Application
{
public App()
{
Application.Current.DispatcherUnhandledException += Application_DispatcherUnhandledException; // UI线程异常捕获
AppDomain.CurrentDomain.UnhandledException += Application_UnhandledException;// 非UI线程异常捕获
}
private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
LogUtil.GetInstance()?.Write(e?.Exception?.Message + Environment.NewLine + e?.Exception?.InnerException?.ToString());
}
private void Application_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Exception ex = e?.ExceptionObject as Exception;
LogUtil.GetInstance()?.Write(ex?.Message + Environment.NewLine + ex?.InnerException?.ToString());
}
}
Log工具类
public class LogUtil
{
private static LogUtil mLogUtil = null;
private static readonly object locker = new object();
public LogUtil()
{
}
public static LogUtil GetInstance()
{
if (null == mLogUtil)
{
lock(locker)
{
if (null == mLogUtil)
{
mLogUtil = new LogUtil();
}
}
}
return mLogUtil;
}
public void Write(string message)
{
FileStream fs = null;
StreamWriter writer = null;
bool directoryExist = false;
string fileName = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
try
{
directoryExist = System.IO.Directory.Exists(@".\Log");
if (!directoryExist) // Log目录不存在
{
DirectoryInfo directoryInfo = System.IO.Directory.CreateDirectory(@".\Log"); // 创建Log目录
}
/* 创建log文件 */
fs = new FileStream(@".\Log\" + fileName + ".txt", FileMode.OpenOrCreate, FileAccess.Write);
if (null != fs)
{
writer = new StreamWriter(fs);
}
writer?.Write(message);
}
finally
{
try
{
writer?.Flush();
writer?.Close();
fs?.Close();
}
finally
{ }
}
}
}