/// <summary> /// Invokes the <see cref="TraceSources"/> factory method with a delegate /// that adds a verbose console trace listener to all sources. /// </summary> /// <returns>Dispose to reset the default factory.</returns> public static IDisposable TraceAllVerbose() { void Configure(SimpleTraceSource traceSource) { traceSource.TraceSource.TryAdd( new Diagnostics.ConsoleTraceListener { Filter = new EventTypeFilter(SourceLevels.All), }); traceSource.TraceSource.Switch.Level = SourceLevels.All; } void Remove(SimpleTraceSource traceSource) => traceSource.TraceSource.Listeners.Remove(Diagnostics.ConsoleTraceListener.DefaultName); DelegateTraceSourceSelector selector = new DelegateTraceSourceSelector(Configure, Remove); TraceSources.AddSelector(selector); TraceSources.For(typeof(TestHelper)) .Verbose("TraceSources are verbose."); void Dispose() => TraceSources.RemoveSelector(selector); return(DelegateDisposable.With(Dispose)); }
private void setupTracingUnsafe() { bool resetIsInitializing = false; try { lock (SyncLock) { if (!isInitialized || isInitializing) { return; } isInitializing = true; resetIsInitializing = true; } TraceSources.For(TraceFileFactoryAssembly) .Info("Configure tracing."); HandleBeginSetupTracing(); disposeResources(); if (ToggleLogFile) { lock (SyncLock) { logFileListener = CreateFileLogTraceListener(); } } setupConfigFileWatcher(); if (addToTraceSources) { TraceSources.AddSelector(this); } traceAction( LogFileListener != null ? $"{nameof(LogFileFactory)} Trace File Initialized." : $"{nameof(LogFileFactory)} Reset With No Trace File."); } finally { if (resetIsInitializing) { lock (SyncLock) { isInitializing = false; } } } HandleEndSetupTracing(); }
/// <summary> /// Removes a selector added in <see cref="AddSelector"/>. /// </summary> /// <param name="selector">Not null.</param> /// <exception cref="ArgumentNullException"></exception> public void RemoveSelector(ILogFileFactorySelector selector) { if (selector == null) { throw new ArgumentNullException(nameof(selector)); } lock (SyncLock) { if (!selectors.Remove(selector)) { return; } if (!isInitialized || !addToTraceSources || isInitializing) { return; } } TraceSources.RemoveSelector(this); TraceSources.AddSelector(this); }
/// <summary> /// Static helper method is used to configure optional verbose tracing. /// </summary> private static void configureTracing() { Console.WriteLine("Verbose Tracing? (Y for Yes)"); ConsoleKey consoleKey = Console.ReadKey().Key; Console.WriteLine(); if (consoleKey != ConsoleKey.Y) { return; } void Configure(SimpleTraceSource traceSource) { traceSource.TraceSource.TryAdd( new Sc.Diagnostics.ConsoleTraceListener { Filter = new EventTypeFilter(SourceLevels.All), }); traceSource.TraceSource.Switch.Level = SourceLevels.All; } TraceSources.AddSelector(new DelegateTraceSourceSelector(Configure)); TraceSources.For(typeof(Program)) .Verbose("TraceSources are verbose."); }