public void LoggingLevelSwitchDynamicallyChangesLevel() { var events = new List<LogEvent>(); var sink = new DelegatingSink(events.Add); var levelSwitch = new LoggingLevelSwitch(LogEventLevel.Information); var log = new LoggerConfiguration() .MinimumLevel.ControlledBy(levelSwitch) .WriteTo.Sink(sink) .CreateLogger() .ForContext<LoggerTests>(); log.Debug("Suppressed"); log.Information("Emitted"); log.Warning("Emitted"); // Change the level levelSwitch.MinimumLevel = LogEventLevel.Error; log.Warning("Suppressed"); log.Error("Emitted"); log.Fatal("Emitted"); Assert.Equal(4, events.Count); Assert.True(events.All(evt => evt.RenderMessage() == "Emitted")); }
public void SetUp() { var delegatingSink = new DelegatingSink(evt => { _loggedEvent = evt; }); var logger = new LoggerConfiguration().MinimumLevel.Verbose().WriteTo.Sink(delegatingSink).CreateLogger(); _loggedEvent = null; _traceListener = new global::SerilogTraceListener.SerilogTraceListener(logger); }
public void SpecifyingThatATypeIsScalarCausesItToBeLoggedAsScalarEvenWhenDestructuring() { var events = new List<LogEvent>(); var sink = new DelegatingSink(events.Add); var logger = new LoggerConfiguration() .WriteTo.Sink(sink) .Destructure.AsScalar(typeof(AB)) .CreateLogger(); logger.Information("{@AB}", new AB()); var ev = events.Single(); var prop = ev.Properties["AB"]; Assert.IsInstanceOf<ScalarValue>(prop); }
public void AFilterPreventsMatchedEventsFromPassingToTheSink() { var excluded = Some.InformationEvent(); var included = Some.InformationEvent(); var filter = new DelegateFilter(e => e.MessageTemplate != excluded.MessageTemplate); var events = new List<LogEvent>(); var sink = new DelegatingSink(events.Add); var logger = new LoggerConfiguration() .WriteTo.Sink(sink) .Filter.With(filter) .CreateLogger(); logger.Write(included); logger.Write(excluded); Assert.AreEqual(1, events.Count); Assert.That(events.Contains(included)); }
public void DestructuringSystemTypeGivesScalarByDefault() { var events = new List<LogEvent>(); var sink = new DelegatingSink(events.Add); var logger = new LoggerConfiguration() .WriteTo.Sink(sink) .CreateLogger(); var thisType = this.GetType(); logger.Information("{@thisType}", thisType); var ev = events.Single(); var prop = ev.Properties["thisType"]; var sv = Assert.IsAssignableFrom<ScalarValue>(prop); Assert.Equal(thisType, sv.LiteralValue()); }
public void TransformationsAreAppliedToEventProperties() { var events = new List<LogEvent>(); var sink = new DelegatingSink(events.Add); var logger = new LoggerConfiguration() .WriteTo.Sink(sink) .Destructure.ByTransforming<AB>(ab => new { C = ab.B }) .CreateLogger(); logger.Information("{@AB}", new AB()); var ev = events.Single(); var prop = ev.Properties["AB"]; var sv = (StructureValue)prop.Value; var c = sv.Properties.Single(); Assert.AreEqual("C", c.Name); }
public void DestructuringIsPossibleForSystemTypeDerivedProperties() { var events = new List<LogEvent>(); var sink = new DelegatingSink(events.Add); var logger = new LoggerConfiguration() .Destructure.With(new ProjectedDestructuringPolicy( canApply: t => typeof(Type).GetTypeInfo().IsAssignableFrom(t.GetTypeInfo()), projection: o => ((Type)o).AssemblyQualifiedName)) .WriteTo.Sink(sink) .CreateLogger(); var thisType = this.GetType(); logger.Information("{@thisType}", thisType); var ev = events.Single(); var prop = ev.Properties["thisType"]; var sv = Assert.IsAssignableFrom<ScalarValue>(prop); Assert.Equal(thisType.AssemblyQualifiedName, sv.LiteralValue()); }