public void Refresh_RemoveSource() { // Use a SourceSwitch that logs Error. CreateAndLoadConfigFile("testhost_RemoveSource_before.config"); TraceSource mySourceToBeRemoved = new TraceSource("Refresh_RemoveSource", SourceLevels.Warning); Assert.Equal(SourceLevels.Warning, mySourceToBeRemoved.DefaultLevel); Assert.Equal(SourceLevels.Error, mySourceToBeRemoved.Switch.Level); // Config has Error. Assert.Equal("Error", mySourceToBeRemoved.Switch.Value); StringTraceListener listenerToBeRemoved = (StringTraceListener)mySourceToBeRemoved.Listeners["listener"]; listenerToBeRemoved.Clear(); mySourceToBeRemoved.TraceEvent(TraceEventType.Error, 1, "Error message."); Assert.Equal($"Refresh_RemoveSource Error: 1 : Error message.{Environment.NewLine}", listenerToBeRemoved.Output); // Change the switch to log All. listenerToBeRemoved.Clear(); CreateAndLoadConfigFile("testhost_RemoveSource_after.config"); Trace.Refresh(); Assert.Equal(SourceLevels.Warning, mySourceToBeRemoved.DefaultLevel); Assert.Equal(SourceLevels.Warning, mySourceToBeRemoved.Switch.Level); // Changed to Warning since the switch was removed from the config. Assert.Equal("Error", mySourceToBeRemoved.Switch.Value); mySourceToBeRemoved.TraceEvent(TraceEventType.Error, 1, "Error message."); Assert.Equal(string.Empty, listenerToBeRemoved.Output); listenerToBeRemoved.Clear(); mySourceToBeRemoved.Close(); }
public void RuntimeFilterChange() { CreateAndLoadConfigFile("testhost_ConfigWithRuntime.config"); TraceSource mySource = new TraceSource("TraceSourceApp"); StringTraceListener origListener = (StringTraceListener)mySource.Listeners["origListener"]; StringTraceListener secondListener = (StringTraceListener)mySource.Listeners["secondListener"]; // Issue an error and a warning message. Only the error message should be logged. mySource.TraceEvent(TraceEventType.Error, 1, "Error message."); mySource.TraceEvent(TraceEventType.Warning, 2, "Warning message."); Assert.Equal($"TraceSourceApp Error: 1 : Error message.{Environment.NewLine}", origListener.Output); Assert.Equal($"TraceSourceApp Error: 1 : Error message.{Environment.NewLine}", secondListener.Output); // Save the original settings from the configuration file. EventTypeFilter configFilter = (EventTypeFilter)mySource.Listeners["origListener"].Filter; Assert.NotNull(configFilter); // Create a new filter that logs warnings. origListener.Filter = new EventTypeFilter(SourceLevels.Warning); // Allow the trace source to send messages to listeners for all event types. // This overrides settings in the configuration file. // If the switch level is not changed, the event filter changes have no effect. mySource.Switch.Level = SourceLevels.All; // Issue a critical and warning message. origListener.Clear(); secondListener.Clear(); mySource.TraceEvent(TraceEventType.Critical, 3, "Critical message."); mySource.TraceEvent(TraceEventType.Warning, 4, "Warning message."); // Both should be logged for origListener. Assert.Equal( $"TraceSourceApp Critical: 3 : Critical message.{Environment.NewLine}" + $"TraceSourceApp Warning: 4 : Warning message.{Environment.NewLine}", origListener.Output); // secondListener is unchanged and doesn't log warnings. Assert.Equal($"TraceSourceApp Critical: 3 : Critical message.{Environment.NewLine}", secondListener.Output); // Restore the original filter settings. origListener.Clear(); secondListener.Clear(); origListener.Filter = configFilter; // Issue an error and information message. Only the error message should be logged. mySource.TraceEvent(TraceEventType.Error, 5, "Error message."); mySource.TraceInformation("Informational message."); Assert.Equal($"TraceSourceApp Error: 5 : Error message.{Environment.NewLine}", origListener.Output); Assert.Equal($"TraceSourceApp Error: 5 : Error message.{Environment.NewLine}", secondListener.Output); origListener.Clear(); secondListener.Clear(); mySource.Close(); }
public void ConfigWithEvents_RuntimeListener() { CreateAndLoadConfigFile("testhost_ConfigWithRuntime.config"); TraceSource.Initializing += SubscribeToTraceSource_Initializing; Switch.Initializing += SubscribeToSwitch_Initializing; TraceSource mySource = new("TraceSource_NoListeners"); Assert.Equal(1, mySource.Listeners.Count); // The default listener was removed via the config StringTraceListener dynamicallyAddedListener = (StringTraceListener)mySource.Listeners[0]; // Only the Critical should be logged. // The config setting was to only log Error, but changed to Critical in the event handler. Log(); Assert.Equal($"TraceSource_NoListeners Critical: 3 : Critical message.{Environment.NewLine}", dynamicallyAddedListener.Output); // Log all. dynamicallyAddedListener.Clear(); mySource.Switch.Level = SourceLevels.All; Log(); Assert.Equal( $"TraceSource_NoListeners Error: 1 : Error message.{Environment.NewLine}" + $"TraceSource_NoListeners Warning: 2 : Warning message.{Environment.NewLine}" + $"TraceSource_NoListeners Critical: 3 : Critical message.{Environment.NewLine}" + $"TraceSource_NoListeners Information: 0 : Informational message.{Environment.NewLine}", dynamicallyAddedListener.Output); dynamicallyAddedListener.Clear(); mySource.Close(); TraceSource.Initializing -= SubscribeToTraceSource_Initializing; Switch.Initializing -= SubscribeToSwitch_Initializing; void Log() { mySource.TraceEvent(TraceEventType.Error, 1, "Error message."); mySource.TraceEvent(TraceEventType.Warning, 2, "Warning message."); mySource.TraceEvent(TraceEventType.Critical, 3, "Critical message."); mySource.TraceInformation("Informational message."); } }
public void Refresh_ChangeSwitch() { // Use a SourceSwitch that logs Error. CreateAndLoadConfigFile("testhost_ChangeSwitch_before.config"); TraceSource mySource = new TraceSource("Refresh_ChangeSwitch"); StringTraceListener listener = (StringTraceListener)mySource.Listeners["listener"]; mySource.TraceInformation("Informational message."); Assert.Equal(string.Empty, listener.Output); // Switch is off. // Change the switch to log. listener.Clear(); CreateAndLoadConfigFile("testhost_ChangeSwitch_after.config"); Trace.Refresh(); mySource.TraceInformation("Informational message."); Assert.Equal($"Refresh_ChangeSwitch Information: 0 : Informational message.{Environment.NewLine}", listener.Output); listener.Close(); mySource.Close(); }
public void Refresh_RemoveSwitch() { // Use a SourceSwitch that logs Error. CreateAndLoadConfigFile("testhost_RemoveSwitch_before.config"); SourceSwitch sswitch = new SourceSwitch("Refresh_RemoveSwitch_sourceSwitchToBeRemoved", "Warning"); Assert.Equal("Warning", sswitch.DefaultValue); Assert.Equal("Error", sswitch.Value); TraceSource mySource = new TraceSource("Refresh_RemoveSwitch"); StringTraceListener listener = (StringTraceListener)mySource.Listeners["listener"]; Log(); Assert.Equal( $"Refresh_RemoveSwitch Error: 1 : Error message.{Environment.NewLine}" + $"Refresh_RemoveSwitch Critical: 3 : Critical message.{Environment.NewLine}", listener.Output); // Change the switch to log All. listener.Clear(); CreateAndLoadConfigFile("testhost_RemoveSwitch_after.config"); Trace.Refresh(); Assert.Equal("Warning", sswitch.DefaultValue); Assert.Equal("Warning", sswitch.Value); // Changed to Warning since the switch was removed from the config. Log(); Assert.Equal(string.Empty, listener.Output); // The default replacement switch is off. listener.Clear(); void Log() { mySource.TraceEvent(TraceEventType.Error, 1, "Error message."); mySource.TraceEvent(TraceEventType.Warning, 2, "Warning message."); mySource.TraceEvent(TraceEventType.Critical, 3, "Critical message."); mySource.TraceInformation("Informational message."); } }