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);
+ }
}
}