/// <summary> /// Delete old files /// </summary> /// <param name="logStoringPeriod"></param> /// <param name="tracer"></param> /// <param name="cleanAllFiles"></param> public static void Clean(TimeSpan logStoringPeriod, MMTracer tracer, bool cleanAllFiles = false) { try { if (logStoringPeriod < TimeSpan.FromDays(1)) { tracer?.Info("Cleaning of old log files is switched off due to zero log storing period."); return; } int deleted = 0; DateTime cutoffTime = DateTime.Now - logStoringPeriod; string abbrev = string.IsNullOrEmpty(ApplicationAbbreviation) ? "" : (ApplicationAbbreviation + "_"); string[] files = cleanAllFiles ? Directory.GetFiles(MMTracer.LogPath, "*", SearchOption.AllDirectories) : Directory.GetFiles(MMTracer.LogPath, $"{s_FileDeleteMask}{abbrev}*.log", SearchOption.TopDirectoryOnly); foreach (string fn in files) { if ((new FileInfo(fn)).LastWriteTime < cutoffTime) { try { File.Delete(fn); deleted++; tracer?.Info($"file '{fn}' is deleted."); } catch (Exception ex) { tracer?.Error($"Error deleting the old log file: {fn}", ex.Message); } } } if (deleted > 0) { tracer?.Info($"{deleted} old log files was deleted."); } } catch (Exception ex) { tracer?.Error("Error deleting old log files.", ex); } }
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { MMTracer tracer = MMTracer.Create("unhandled"); tracer.Error("Unhandled exception occurred!", e.ExceptionObject?.ToString()); }