diff --git a/serilog-extensions-logging.sln.DotSettings b/serilog-extensions-logging.sln.DotSettings index 4009815..c2fd9da 100644 --- a/serilog-extensions-logging.sln.DotSettings +++ b/serilog-extensions-logging.sln.DotSettings @@ -8,4 +8,5 @@ True True True - True \ No newline at end of file + True + True \ No newline at end of file diff --git a/src/Serilog.Extensions.Logging/Extensions/Logging/SerilogLogger.cs b/src/Serilog.Extensions.Logging/Extensions/Logging/SerilogLogger.cs index 30a46e5..77f357a 100644 --- a/src/Serilog.Extensions.Logging/Extensions/Logging/SerilogLogger.cs +++ b/src/Serilog.Extensions.Logging/Extensions/Logging/SerilogLogger.cs @@ -9,6 +9,7 @@ using Serilog.Events; using FrameworkLogger = Microsoft.Extensions.Logging.ILogger; using System.Reflection; +using Serilog.Debugging; using Serilog.Parsing; namespace Serilog.Extensions.Logging @@ -60,6 +61,18 @@ public void Log(LogLevel logLevel, EventId eventId, TState state, Except return; } + try + { + Write(level, eventId, state, exception, formatter); + } + catch (Exception ex) + { + SelfLog.WriteLine($"Failed to write event through {typeof(SerilogLogger).Name}: {ex}"); + } + } + + void Write(LogEventLevel level, EventId eventId, TState state, Exception exception, Func formatter) + { var logger = _logger; string messageTemplate = null; diff --git a/test/Serilog.Extensions.Logging.Tests/SerilogLoggerTests.cs b/test/Serilog.Extensions.Logging.Tests/SerilogLoggerTests.cs index 5baadf7..f37e9eb 100644 --- a/test/Serilog.Extensions.Logging.Tests/SerilogLoggerTests.cs +++ b/test/Serilog.Extensions.Logging.Tests/SerilogLoggerTests.cs @@ -167,7 +167,7 @@ public void StringifyScopeProperty() { var (logger, sink) = SetUp(LogLevel.Trace); - using (logger.BeginScope("{$values}", new int[] { 1, 2, 3, 4 })) + using (logger.BeginScope("{$values}", new [] { 1, 2, 3, 4 })) { logger.Log(LogLevel.Information, 0, TestMessage, null, null); } @@ -272,6 +272,7 @@ public void CarriesEventIdIfNonzero() public void WhenDisposeIsFalseProvidedLoggerIsNotDisposed() { var logger = new DisposeTrackingLogger(); + // ReSharper disable once RedundantArgumentDefaultValue var provider = new SerilogLoggerProvider(logger, false); provider.Dispose(); Assert.False(logger.IsDisposed); @@ -439,5 +440,15 @@ public void LowAndHighNumberedEventIdsAreMapped(int id) var scalar = Assert.IsType(idValue); Assert.Equal(id, scalar.Value); } + + [Fact] + public void MismatchedMessageTemplateParameterCountIsHandled() + { + var (logger, sink) = SetUp(LogLevel.Trace); + + logger.LogInformation("Some test message with {Two} {Properties}", "OneProperty"); + + Assert.Equal(0, sink.Writes.Count); + } } }