/// <summary> /// Create a serilog trace logger which replaces the default logging. /// </summary> public static StringArrayTraceLogger Create(TextWriter writer, int traceMasks) { var traceLogger = new StringArrayTraceLogger(writer, traceMasks); // disable the built in tracing, use nunit trace output Utils.SetTraceMask(Utils.TraceMask & Utils.TraceMasks.StackTrace); Utils.SetTraceOutput(Utils.TraceOutput.Off); Utils.Tracing.TraceEventHandler += traceLogger.TraceEventHandler; return(traceLogger); }
public void LogTraceEventMessages(LogLevel logLevel) { Utils.SetLogLevel(logLevel); using (var logger = StringArrayTraceLogger.Create(TestContext.Out, Utils.TraceMasks.All)) { Assert.NotNull(logger); logger.LastTraceEventArgs = null; // test the legacy log mapping to TraceEventArgs Utils.Trace(Utils.TraceMasks.None, "This is a None message: {0}", Utils.TraceMasks.None); if (Utils.Logger.IsEnabled(LogLevel.Trace)) { Assert.AreEqual(Utils.TraceMasks.Information, logger.LastTraceEventArgs.TraceMask); logger.LastTraceEventArgs = null; } else { Assert.IsNull(logger.LastTraceEventArgs); } Utils.Trace(Utils.TraceMasks.Error, "This is an Error message: {0}", Utils.TraceMasks.Error); if (Utils.Logger.IsEnabled(LogLevel.Error)) { Assert.AreEqual(Utils.TraceMasks.Error, logger.LastTraceEventArgs.TraceMask); logger.LastTraceEventArgs = null; } else { Assert.IsNull(logger.LastTraceEventArgs); } Utils.Trace(Utils.TraceMasks.Information, "This is a Information message: {0}", Utils.TraceMasks.Information); if (Utils.Logger.IsEnabled(LogLevel.Information)) { Assert.AreEqual(Utils.TraceMasks.Information, logger.LastTraceEventArgs.TraceMask); logger.LastTraceEventArgs = null; } else { Assert.IsNull(logger.LastTraceEventArgs); } Utils.Trace(Utils.TraceMasks.StackTrace, "This is a StackTrace message: {0}", Utils.TraceMasks.StackTrace); if (Utils.Logger.IsEnabled(LogLevel.Error)) { Assert.AreEqual(Utils.TraceMasks.StackTrace, logger.LastTraceEventArgs.TraceMask); logger.LastTraceEventArgs = null; } else { Assert.IsNull(logger.LastTraceEventArgs); } Utils.Trace(Utils.TraceMasks.Service, "This is a Service message: {0}", Utils.TraceMasks.Service); if (Utils.Logger.IsEnabled(LogLevel.Trace)) { Assert.AreEqual(Utils.TraceMasks.Service, logger.LastTraceEventArgs.TraceMask); logger.LastTraceEventArgs = null; } else { Assert.IsNull(logger.LastTraceEventArgs); } Utils.Trace(Utils.TraceMasks.ServiceDetail, "This is a ServiceDetail message: {0}", Utils.TraceMasks.ServiceDetail); if (Utils.Logger.IsEnabled(LogLevel.Trace)) { Assert.AreEqual(Utils.TraceMasks.ServiceDetail, logger.LastTraceEventArgs.TraceMask); logger.LastTraceEventArgs = null; } else { Assert.IsNull(logger.LastTraceEventArgs); } Utils.Trace(Utils.TraceMasks.Operation, "This is a Operation message: {0}", Utils.TraceMasks.Operation); if (Utils.Logger.IsEnabled(LogLevel.Trace)) { Assert.AreEqual(Utils.TraceMasks.Operation, logger.LastTraceEventArgs.TraceMask); logger.LastTraceEventArgs = null; } else { Assert.IsNull(logger.LastTraceEventArgs); } Utils.Trace(Utils.TraceMasks.OperationDetail, "This is a OperationDetail message: {0}", Utils.TraceMasks.OperationDetail); if (Utils.Logger.IsEnabled(LogLevel.Trace)) { Assert.AreEqual(Utils.TraceMasks.OperationDetail, logger.LastTraceEventArgs.TraceMask); logger.LastTraceEventArgs = null; } else { Assert.IsNull(logger.LastTraceEventArgs); } Utils.Trace(Utils.TraceMasks.StartStop, "This is a StartStop message: {0}", Utils.TraceMasks.StartStop); if (Utils.Logger.IsEnabled(LogLevel.Information)) { Assert.AreEqual(Utils.TraceMasks.StartStop, logger.LastTraceEventArgs.TraceMask); logger.LastTraceEventArgs = null; } else { Assert.IsNull(logger.LastTraceEventArgs); } Utils.Trace(Utils.TraceMasks.ExternalSystem, "This is a ExternalSystem message: {0}", Utils.TraceMasks.ExternalSystem); if (Utils.Logger.IsEnabled(LogLevel.Trace)) { Assert.AreEqual(Utils.TraceMasks.ExternalSystem, logger.LastTraceEventArgs.TraceMask); logger.LastTraceEventArgs = null; } else { Assert.IsNull(logger.LastTraceEventArgs); } Utils.Trace(Utils.TraceMasks.Security, "This is a Security message: {0}", Utils.TraceMasks.Security); if (Utils.Logger.IsEnabled(LogLevel.Information)) { Assert.AreEqual(Utils.TraceMasks.Security, logger.LastTraceEventArgs.TraceMask); logger.LastTraceEventArgs = null; } else { Assert.IsNull(logger.LastTraceEventArgs); } var sre = new ServiceResultException(StatusCodes.BadServiceUnsupported, "service unsupported"); Utils.Trace(sre, "This is a ServiceResultException"); TestContext.Out.WriteLine("Logged {0} messages.", logger.TraceList.Count); Utils.LogTrace("This is a Trace message: {0}", LogLevel.Trace); Utils.LogDebug("This is a Debug message: {0}", LogLevel.Debug); Utils.LogInfo("This is a Info message: {0}", LogLevel.Information); Utils.LogWarning("This is a Warning message: {0}", LogLevel.Warning); Utils.LogError("This is a Error message: {0}", LogLevel.Error); Utils.LogCritical("This is a Critical message: {0}", LogLevel.Critical); TestContext.Out.WriteLine("Logged {0} messages.", logger.TraceList.Count); #if DEBUG switch (logLevel) { case LogLevel.Trace: Assert.AreEqual(19, logger.TraceList.Count); break; case LogLevel.Debug: Assert.AreEqual(12, logger.TraceList.Count); break; case LogLevel.Information: Assert.AreEqual(11, logger.TraceList.Count); break; case LogLevel.Warning: Assert.AreEqual(7, logger.TraceList.Count); break; case LogLevel.Error: Assert.AreEqual(6, logger.TraceList.Count); break; case LogLevel.Critical: Assert.AreEqual(1, logger.TraceList.Count); break; } #else switch (logLevel) { case LogLevel.Trace: Assert.AreEqual(18, logger.TraceList.Count); break; case LogLevel.Debug: Assert.AreEqual(11, logger.TraceList.Count); break; case LogLevel.Information: Assert.AreEqual(11, logger.TraceList.Count); break; case LogLevel.Warning: Assert.AreEqual(7, logger.TraceList.Count); break; case LogLevel.Error: Assert.AreEqual(6, logger.TraceList.Count); break; case LogLevel.Critical: Assert.AreEqual(1, logger.TraceList.Count); break; } #endif } }