`namespace MyApp
{
///

/// App.xaml 的交互逻辑
///

public partial class App : Application
{
public App()
{
//UI线程异常
this.DispatcherUnhandledException += App_DispatcherUnhandledException;
//非UI线程异常
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

    }
    private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
    {
        //可以记录日志并转向错误bug窗口友好提示用户
        e.Handled = true;
        try
        {
            PLogs.Error(e.Exception.TargetSite.ToString(), e.Exception.Message);
           
        }
        catch (Exception)
        {


        }
    MessageBox.Show("抱歉给您带来不便!消息:" + e.Exception.Message, "系统错误",MessageBoxButton.OK,MessageBoxImage.Error);

    }
    private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        //可以记录日志并转向错误bug窗口友好提示用户
        if (e.ExceptionObject is System.Exception)
        {

            Exception ex = (System.Exception)e.ExceptionObject;
            try
            {
                PLogs.Error(ex.TargetSite.ToString(), ex.Message);
           
            }
            catch (Exception)
            {


            }
            MessageBox.Show("抱歉给您带来不便!消息:" + ex.Message, "系统错误", MessageBoxButton.OK, MessageBoxImage.Error);
      
        }
    }
}

}-----------------------------------------------分界线----------------------------------------------------- 日志: class PLogs
{
///

/// 普通日志
///

/// 类名
/// 日志记录
public static void Info(string className, string info)
{
WriteLog(“INFO”, className, info);
}

    /// <summary>
    /// 警告日志
    /// </summary>
    /// <param name="className">类名</param>
    /// <param name="info">日志记录</param>
    public static void Warn(string className, string info)
    {
        WriteLog("WARN", className, info);
    }

    /// <summary>
    /// 错误日志
    /// </summary>
    /// <param name="className">类名</param>
    /// <param name="info">日志记录</param>
    public static void Error(string className, string info)
    {
        WriteLog("ERROE", className, info);
    }

    /// <summary>
    /// 写入日志
    /// </summary>
    /// <param name="className">类名</param>
    /// <param name="infoLevel">日志级别</param>
    /// <param name="info">日志记录</param>
    private static void WriteLog(string className, string infoLevel, string info)
    {
        string logFilePath = AppDomain.CurrentDomain.BaseDirectory + "/logs";
        if (!Directory.Exists(logFilePath))
        {
            Directory.CreateDirectory(logFilePath);
        }
        string logFileName = logFilePath + "/" + "log_" + DateTime.Now.ToString("yyyyMMdd") + ".log";
        if (!File.Exists(logFileName))
        {
            File.Create(logFileName).Close();
        }
        string logFormat = string.Format("[ {0} ] {1}  {2}  {3}",
                                       DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                       className, infoLevel, info);
        StreamWriter sw = File.AppendText(logFileName);
        sw.WriteLine(logFormat);
        sw.Flush();
        sw.Close();
    }
}`

版权声明:本文为mingyao-yuan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/mingyao-yuan/p/13968971.html