public void TraceToString(ConfigForm configForm) { var stringWriter = new StringWriter(); TraceManager traceManager; if (configForm == ConfigForm.ObjectGraph) { var config = new TextWriterLogWriterConfig(stringWriter).Format(new DefaultTraceFormatter() { IncludeDate = true, IncludeTimestamp = true }); traceManager = new TraceManager(config); } else if (configForm == ConfigForm.Fluent) { traceManager = new TraceManager(); traceManager.Config.TraceTo(stringWriter, traceFormatter: new DefaultTraceFormatter() { IncludeDate = true, IncludeTimestamp = true }); } else { throw new NotImplementedException(); } using (traceManager) { var tracer = traceManager.TracerFor(this); Assert.True(traceManager.IsStarted); Assert.True(traceManager.LogManager.IsStarted); Assert.True(tracer.IsInfoEnabled()); Assert.False(tracer.IsVerboseEnabled()); Assert.False(traceManager.IsStopped); Assert.False(traceManager.LogManager.IsStopped); Assert.True(traceManager.IsHealthy); //Assert.Single(tracer.Writers); //Assert.IsType<DebuggerLogWriter>(tracer.Writers[0].innerEntryWriter); tracer.Info("Info message"); tracer.Debug("Debug message not written"); } Assert.Matches(@"Info\s+LJ\.UT\.T\.Config\.TraceManagerConfigTests\s+Info message\r\n", stringWriter.ToString()); _testOutputHelper.WriteEntries(traceManager.SetupLog); Assert.False(traceManager.IsStarted); Assert.False(traceManager.LogManager.IsStarted); Assert.True(traceManager.IsStopped); Assert.True(traceManager.LogManager.IsStopped); Assert.True(traceManager.IsHealthy); }
public void AddingTraceWriterConfigUpdatesLogManagerConfig() { var textWriterLogWriterConfig = new TextWriterLogWriterConfig(new StringWriter()); var logWriterConfigs = new ILogWriterConfig[] { new ListLogWriterConfig <TraceEntry>(), textWriterLogWriterConfig }; using (var traceManager = new TraceManager()) { foreach (var logWriterConfig in logWriterConfigs) { traceManager.Config.Writers.Add(new TraceWriterConfig(logWriterConfig, TraceManagerConfig.CreateDefaultSwitchSet())); Assert.Contains(traceManager.LogManager.Config.Writers, lwc => lwc == logWriterConfig); } } }
public void LogWriterCreateExceptionIsHandled() { Func <TextWriter> throwOnCreate = () => { throw new AccessViolationException("Testing what happens when access is denied"); }; using (var logManager = new LogManager()) { TextWriterLogWriterConfig logWriterConfig = logManager.Config.UseTextWriter(throwOnCreate); logWriterConfig.Format(new DefaultTraceFormatter()); Assert.True(logManager.IsHealthy); // Exception is thrown during Start() logManager.Start(); Assert.False(logManager.IsHealthy); _testOutputHelper.WriteEntries(logManager.SetupLog); ILogWriter logWriter; Assert.False(logManager.TryGetLogWriter(logWriterConfig, out logWriter)); var traceEntryWriter = logManager.GetEntryWriter <TraceEntry>(); Assert.NotNull(traceEntryWriter); Assert.IsType <NoOpEntryWriter <TraceEntry> >(traceEntryWriter); } }
public void RemovingTraceWriterConfigLeavesWritersFormattedForOtherEntryTypes() { var textWriterLogWriterConfig = new TextWriterLogWriterConfig(new StringWriter()); textWriterLogWriterConfig.Format <MessageEntry>(); using (var traceManager = new TraceManager()) { // Add tracing to the textWriter var traceWriterConfig = traceManager.Config.TraceTo(textWriterLogWriterConfig); // The textWriterLogWriter should now include formatters for 2 entry types Assert.True(textWriterLogWriterConfig.HasFormatterFor <TraceEntry>()); Assert.True(textWriterLogWriterConfig.HasFormatterFor <MessageEntry>()); // Remove the LogWriter from LogManager.Config traceManager.LogManager.Config.Writers.Remove(textWriterLogWriterConfig); // Now it should not exist either in the TraceManagerConfig or the LogManagerConfig Assert.DoesNotContain(traceManager.LogManager.Config.Writers, lwc => lwc == textWriterLogWriterConfig); Assert.DoesNotContain(traceManager.Config.Writers, twc => twc == traceWriterConfig); // Add tracing to the textWriter (again) traceWriterConfig = traceManager.Config.TraceTo(textWriterLogWriterConfig); // Now it should exist in both the TraceManagerConfig and the LogManagerConfig Assert.Contains(traceManager.LogManager.Config.Writers, lwc => lwc == textWriterLogWriterConfig); Assert.Contains(traceManager.Config.Writers, twc => twc == traceWriterConfig); // Remove tracing to the textWriter Assert.True(traceManager.Config.Writers.Remove(traceWriterConfig)); // Now it should exist only in the LogManagerConfig Assert.Contains(traceManager.LogManager.Config.Writers, lwc => lwc == textWriterLogWriterConfig); Assert.DoesNotContain(traceManager.Config.Writers, twc => twc == traceWriterConfig); } }
public void RemovingTraceWriterConfigDoesNotRemoveLogWriterConfigs() { var textWriterLogWriterConfig = new TextWriterLogWriterConfig(new StringWriter()); var logWriterConfigs = new ILogWriterConfig[] { new ListLogWriterConfig <TraceEntry>(), textWriterLogWriterConfig }; var traceWriterConfigs = new List <TraceWriterConfig>(); using (var traceManager = new TraceManager()) { foreach (var logWriterConfig in logWriterConfigs) { traceWriterConfigs.Add(new TraceWriterConfig(logWriterConfig, TraceManagerConfig.CreateDefaultSwitchSet())); } traceManager.Config.Writers.UnionWith(traceWriterConfigs); // Test removing each for (int i = 0; i < logWriterConfigs.Length; ++i) { var logWriterConfig = logWriterConfigs[i]; var traceWriterConfig = traceWriterConfigs[i]; // Each logWriterConfig should exist in the LogManagerConfig before it is removed from the TraceManagerConfig Assert.Contains(traceManager.LogManager.Config.Writers, lwc => lwc == logWriterConfig); traceManager.Config.Writers.Remove(traceWriterConfig); Assert.DoesNotContain(traceManager.Config.Writers, twc => twc == traceWriterConfig); // LogWriters are left in place, because they may be used for other purposes Assert.Contains(traceManager.LogManager.Config.Writers, lwc => lwc == logWriterConfig); } } }