[TestMethod()] public void MultipleFilters() { var Logger = new LoggerProxy(Log); var filters = Logger.Filters; filters.Add(LogFilters.AddPrefix("Pre>")); Log.WriteDelay = 0; Log.Filters.Add(LogFilters.IgnoreDuplicateExceptions()); Log.Filters.Add(LogFilters.AutoMultiParam); Log.Filters.Add(LogFilters.FormatParams); Log.Filters.Add(LogFilters.ResolveLazy); Log.Filters.Add(LogFilters.AddPostfix("<Post")); Logger.Info("ARST"); Assert.IsTrue(LogContent.Contains("Pre>ARST"), "Simple Log"); Logger.Info("A", "R", null, "S", "T"); Assert.IsTrue(LogContent.Contains(">A R null S T<"), "Format multi params"); Logger.Info((Func <string>)(() => "QWFP")); Assert.IsTrue(LogContent.Contains(">QWFP"), "Resolve lazy"); Exception subject = new Exception(); Logger.Error(subject); Assert.IsTrue(LogContent.Contains("Pre>System.Exception:"), "Exception is logged"); var len = LogSize; Logger.Error("Error: {0}", subject); Assert.IsTrue(LogSize == len, "Duplicate is suppressed"); }
[TestMethod()] public void IngoreDupErrorFilter() { Log.WriteDelay = 0; Log.Filters.Add(LogFilters.IgnoreDuplicateExceptions()); Exception subject = new Exception(); Log.Error(subject); Assert.IsTrue(LogContent.Contains("Exception"), "Exception is logged"); long len = LogSize; Log.Error(subject); Assert.IsTrue(LogSize == len, "Duplicate is suppressed"); Log.Error(subject.ToString()); Assert.IsTrue(LogSize > len, "Non exceptions are allowed"); len = LogSize; Log.Filters.Add(LogFilters.AddPrefix("ABC")); Log.Filters.Add(LogFilters.AddPostfix("DEF")); Log.Error(subject); Assert.IsTrue(LogSize == len, "Duplicate is suppressed with pre post"); Log.Error(new FormatException()); Assert.IsTrue(LogContent.Contains("FormatException"), "New exception is logged"); len = LogSize; Log.Error(subject); Assert.IsTrue(LogSize == len, "Duplicate is still suppressed"); Assert.AreEqual(null, Error, "OnError"); }
public Logger Log() { lock (this) { if (Logger != null) { return(Logger); } Logger = new LoggerProxy(ModLoader.Log) { Level = LogLevel ?? ModLoader.Settings.LogLevel }; } Logger.Filters.Add(LogFilters.IgnoreDuplicateExceptions()); Logger.Filters.Add(PrefixFilter); return(Logger); }
public static void SetLog(Logger logger, bool clear = false) { lock ( MOD_PATH ) { if (Log != null) { throw new InvalidOperationException(); } Log = logger ?? throw new NullReferenceException(nameof(logger)); logger.Filters.Clear(); Log.Filters.Add(LogFilters.IgnoreDuplicateExceptions("(same stacktrace as before)")); Log.Filters.Add(LogFilters.AutoMultiParam); Log.Filters.Add(LogFilters.FormatParams); Log.Filters.Add(LogFilters.ResolveLazy); if (clear) { Log.Clear(); } LoaderVersion = Assembly.GetExecutingAssembly().GetName().Version; Log.Info("{0}/{1}; {2}", typeof(ModLoader).FullName, LoaderVersion, DateTime.Now.ToString("u")); Json.JsonLogger.Masters.Clear(); Json.JsonLogger.Masters.Add(Log); } }