Exemple #1
0
        /// <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));
        }
Exemple #2
0
        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();
        }
Exemple #3
0
 /// <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);
 }
Exemple #4
0
        /// <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.");
        }