public void DumpTest() { var folder = Executable.Relative("Exceptions"); var folderInfo = new DirectoryInfo(folder); if (Directory.Exists(folder)) { Directory.Delete(folder, true); } //returns true sometimes when opened on Explorer while (Directory.Exists(folder)) { Thread.Yield(); } Assert.IsFalse(Directory.Exists(folder)); Thrower.Dump(new Exception("Exception at DumpTest!", new Exception("Inner"))); Assert.IsTrue(Directory.Exists(folder)); var files = Directory.GetFiles(folder); Assert.AreEqual(1, files.Length); var file = Path.GetFileName(files[0]); Assert.IsTrue(file.StartsWith("exception-")); Assert.IsTrue(file.EndsWith(".txt")); var regex = new Regex(@"exception-\d{8}_\d{6}_\d{3}\.txt"); Assert.IsTrue(regex.IsMatch(file)); var lines = File.ReadAllLines(files[0]); Assert.IsTrue(lines.Length > 0); Assert.AreEqual("System.Exception: Exception at DumpTest! ---> System.Exception: Inner", lines[0]); }
public void Log(Log log) { formatter.Format(log); runner.Run(() => { foreach (var appender in appenders) { Catcher.Try(() => appender(log), (ex) => { removes.Add(appender); Thrower.Dump(ex); }); } //autoremove excepting appenders foreach (var appender in removes) { appenders.Remove(appender); } removes.Clear(); }); }