public static void 初始化(TraceEventType __日志级别 = TraceEventType.Verbose, string __日志目录 = "日志", string __日志文件名称 = "", int __保留天数 = 30) { if (_已初始化) { return; } _已初始化 = true; H日志.初始化(__日志级别, __日志目录, __日志文件名称); 日志目录 = __日志目录; var __环境信息 = new Dictionary <string, object>(); __环境信息["Version"] = Assembly.GetCallingAssembly().GetName().Version.ToString(); __环境信息["FileVersion"] = FileVersionInfo.GetVersionInfo(Assembly.GetCallingAssembly().Location).FileVersion; __环境信息["MachineName"] = Environment.MachineName; __环境信息["UserName"] = Environment.UserName; __环境信息["IP"] = String.Join(";", H网络配置.获取可用IP().Select(q => q.ToString())); __环境信息["OSVersion"] = Environment.OSVersion.VersionString; __环境信息["CLR Version"] = Environment.Version; __环境信息["Is64BitProcess"] = Environment.Is64BitProcess; __环境信息["CurrentDirectory"] = Environment.CurrentDirectory; 记录提示("程序启动", H序列化.ToJSON字符串(__环境信息)); if (__保留天数 != int.MaxValue) { 清除过期调试文件(日志目录, __保留天数); } if (处理异常) { Application.ThreadException += (sender, ex) => H异常.处理UI线程(ex.Exception, 未处理异常自动退出); AppDomain.CurrentDomain.UnhandledException += (sender, e) => { if (e.ExceptionObject == null) { return; } var ex = e.ExceptionObject as Exception; if (ex == null) { 记录致命(e.ExceptionObject.ToString()); } else { H异常.处理非UI线程(ex); } }; } }
public static void 清除过期调试文件(string __路径, int __保留天数 = 30, int __清除频率小时 = 24) { ThreadPool.QueueUserWorkItem(arg => { while (true) { try { var __日志路径 = H路径.获取绝对路径(__路径); H日志.记录明细(string.Format("日志路径:{0}; 保留天数:{1}; 清除频率小时:{2}", __日志路径, __保留天数, __清除频率小时)); if (Directory.Exists(__日志路径)) { var __目录 = new DirectoryInfo(__日志路径); foreach (var __文件 in __目录.GetFiles()) { if (__文件.LastWriteTime.AddDays(__保留天数) < DateTime.Now) { try { __文件.Delete(); H日志.记录明细(string.Format("删除日志:{0}; ", __文件)); } catch (Exception ex) { 记录异常(ex); } } } } } catch (Exception ex) { //非核心线程,出错仅记录 记录异常(ex); } Thread.Sleep(new TimeSpan(__清除频率小时, 0, 0));//一天执行一次 } }); }
public static void 记录异常(Exception __异常, string __信息 = "", string __内容 = null, TraceEventType __等级 = TraceEventType.Error, [CallerMemberName] string __方法 = "", [CallerFilePath] string __文件 = "", [CallerLineNumber] int __行号 = 0) { H日志.记录异常(__异常, __信息, __内容, __等级, __方法, __文件, __行号); }
public static void 记录致命(string __信息, string __内容 = null, [CallerMemberName] string __方法 = "", [CallerFilePath] string __文件 = "", [CallerLineNumber] int __行号 = 0) { H日志.记录(__信息, TraceEventType.Critical, __内容, __方法, __文件, __行号); }
public static void 记录提示(string __信息 = "", string __内容 = null, [CallerMemberName] string __方法 = "", [CallerFilePath] string __文件 = "", [CallerLineNumber] int __行号 = 0) { H日志.记录(__信息, TraceEventType.Information, __内容, __方法, __文件, __行号); }