Ejemplo n.º 1
0
        public void EnableTracingForSpecificGenericType()
        {
            var setupTracerFactory = new SetupLog();
            var traceConfig        = new TraceWriterConfig(new ListLogWriter <TraceEntry>(setupTracerFactory))
            {
                Switches =
                {
                    { typeof(PrivateClass.TestEntryWriter <MessageEntry>), new OnOffTraceSwitch(true) }
                }
            };

            using (var traceManager = new TraceManager(traceConfig, setupTracerFactory))
            {
                var tracer = traceManager.TracerFor(this);
                Assert.False(tracer.IsInfoEnabled());

                tracer = traceManager.GetTracer(typeof(PrivateClass.TestEntryWriter <>));
                Assert.False(tracer.IsInfoEnabled());

                tracer = traceManager.TracerFor <PrivateClass.TestEntryWriter <MessageEntry> >();
                Assert.True(tracer.IsInfoEnabled());

                tracer = traceManager.TracerFor <PrivateClass.TestEntryWriter <TraceEntry> >();
                Assert.False(tracer.IsInfoEnabled());
            }
        }
Ejemplo n.º 2
0
        public void UnitTestTracingWithGlobalTraceManager(ConfigForm configForm, int iteration)
        {
            // It can occur that the Tracer was obtained before the test starts
            Tracer tracer = TraceManager.Instance.TracerFor(this);

            // In a real app you probably don't have to reset the LogManager + TraceManager before configuring.
            // However for unit testing it can be a good idea to clear configuration from previous tests.
            LogManager.Instance.Reset(true);
            TraceManager.Instance.Reset(true);
            Assert.Same(LogManager.Instance, TraceManager.Instance.LogManager);

            // Traces sent to this list
            var setupTracerFactory = TraceManager.Instance.SetupTracerFactory;
            var listWriter         = new ListLogWriter <TraceEntry>(setupTracerFactory);

            // Add the list TraceWriter only for this class
            TraceManagerConfig config = TraceManager.Instance.Config;
            TraceWriterConfig  listTraceConfig;

            if (configForm == ConfigForm.ObjectGraph)
            {
                listTraceConfig = new TraceWriterConfig(listWriter)
                {
                    Switches =
                    {
                        { GetType(), new OnOffTraceSwitch(true) }
                    }
                };
                config.Writers.Add(listTraceConfig);
            }
            else if (configForm == ConfigForm.Fluent)
            {
                listTraceConfig = config.UseLogWriter(listWriter, GetType(), new OnOffTraceSwitch(true));
            }
            else
            {
                throw new NotImplementedException();
            }

            // restart to load config and assign writers
            TraceManager.Instance.Start();

            // Ensure start didn't result in any errors
            Assert.True(TraceManager.Instance.IsHealthy);

            tracer.Info("Info message");
            tracer.Debug("Debug message");
            Assert.Equal(2, listWriter.Count);

            // Remove the TraceWriterConfig just to ensure that everything returns to normal
            Assert.True(TraceManager.Instance.Config.Writers.Remove(listTraceConfig));
            // restart to reset config
            TraceManager.Instance.Start();

            LogJam.Internal.UnitTests.Trace.TraceManagerConfigTests.AssertEquivalentToDefaultTraceManagerConfig(TraceManager.Instance);

            // Now tracing goes to the debug window only, but not to the list
            tracer.Info("Not logged to list, but logged to debug out.");
            Assert.Equal(2, listWriter.Count);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Configures console tracing using object graph configuration (newing the config objects), and enables all trace levels
        /// for the <see cref="ConsoleTestCases" /> class.
        /// </summary>
        public void ObjectGraphConfigForTraceEnableAllLevels()
        {
            ConsoleLogWriterConfig = new ConsoleLogWriterConfig();
            ConsoleLogWriterConfig.Format <TraceEntry>();
            var config = new TraceWriterConfig(ConsoleLogWriterConfig)
            {
                Switches =
                {
                    // Default threshold (info) for all tracers
                    { Tracer.All,               new ThresholdTraceSwitch(TraceLevel.Info) },
                    // Enable all trace levels for ConsoleTestCases
                    { typeof(ConsoleTestCases), new OnOffTraceSwitch(true)                }
                }
            };

            TraceManager.Config.Writers.Add(config);
        }
Ejemplo n.º 4
0
        public void MultipleTraceLogWritersForSameNamePrefixWithDifferentSwitchThresholds()
        {
            var setupTracerFactory = new SetupLog();
            var allListLogWriter   = new ListLogWriter <TraceEntry>(setupTracerFactory);
            var errorListLogWriter = new ListLogWriter <TraceEntry>(setupTracerFactory);

            var traceWriterConfigAll = new TraceWriterConfig(allListLogWriter)
            {
                Switches =
                {
                    { "LogJam.UnitTests", new OnOffTraceSwitch(true) }
                }
            };
            var traceWriterConfigErrors = new TraceWriterConfig(errorListLogWriter)
            {
                Switches =
                {
                    { "LogJam.UnitTests", new ThresholdTraceSwitch(TraceLevel.Error) }
                }
            };

            using (var traceManager = new TraceManager(new TraceManagerConfig(traceWriterConfigAll, traceWriterConfigErrors), setupTracerFactory))
            {
                var tracer    = traceManager.TracerFor(this);
                var fooTracer = traceManager.GetTracer("foo");

                tracer.Info("Info");
                tracer.Verbose("Verbose");
                tracer.Error("Error");
                tracer.Severe("Severe");

                // fooTracer shouldn't log to either of these lists
                fooTracer.Severe("foo Severe");

                Assert.Equal(2, errorListLogWriter.Count);
                Assert.Equal(4, allListLogWriter.Count);
            }
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Creates a new <see cref="TraceManager" /> instance using the specified <paramref name="traceWriterConfig" />.
 /// </summary>
 /// <param name="traceWriterConfig">The <see cref="TraceWriterConfig" /> to use for this <c>TraceManager</c>.</param>
 /// <param name="setupLog">The <see cref="SetupTracerFactory" /> to use for tracing setup operations.</param>
 public TraceManager(TraceWriterConfig traceWriterConfig, SetupLog setupLog = null)
     : this(new TraceManagerConfig(traceWriterConfig), setupLog)
 {
     Contract.Requires <ArgumentNullException>(traceWriterConfig != null);
 }