diff --git a/src/Squidex.Infrastructure/Log/Adapter/SemanticLogLogger.cs b/src/Squidex.Infrastructure/Log/Adapter/SemanticLogLogger.cs index 3842f2e2a..b978abf1b 100644 --- a/src/Squidex.Infrastructure/Log/Adapter/SemanticLogLogger.cs +++ b/src/Squidex.Infrastructure/Log/Adapter/SemanticLogLogger.cs @@ -6,6 +6,7 @@ // ========================================================================== using System; +using System.Collections.Generic; using Microsoft.Extensions.Logging; namespace Squidex.Infrastructure.Log.Adapter @@ -70,6 +71,22 @@ namespace Squidex.Infrastructure.Log.Adapter }); } + if (state is IReadOnlyList> parameters) + { + foreach (var kvp in parameters) + { + if (kvp.Value != null) + { + var key = kvp.Key.Trim('{', '}', ' '); + + if (key.Length > 2 && !string.Equals(key, "originalFormat", StringComparison.OrdinalIgnoreCase)) + { + writer.WriteProperty(key.ToCamelCase(), kvp.Value.ToString()); + } + } + } + } + if (exception != null) { writer.WriteException(exception); diff --git a/tests/Squidex.Infrastructure.Tests/Log/SemanticLogAdapterTests.cs b/tests/Squidex.Infrastructure.Tests/Log/SemanticLogAdapterTests.cs index 9ed2af720..9f5d9fef3 100644 --- a/tests/Squidex.Infrastructure.Tests/Log/SemanticLogAdapterTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Log/SemanticLogAdapterTests.cs @@ -125,6 +125,44 @@ namespace Squidex.Infrastructure.Log Assert.Equal(expected, output); } + [Fact] + public void Should_log_additional_values() + { + var exception = new InvalidOperationException(); + + var logger = sut.CreateLogger("my-category"); + + logger.LogDebug("My numbers are {number1} and {Number2}", 123, 456); + + var expected = + MakeTestCall(w => w + .WriteProperty("logLevel", "Debug") + .WriteProperty("message", "My numbers are 123 and 456") + .WriteProperty("number1", "123") + .WriteProperty("number2", "456") + .WriteProperty("category", "my-category")); + + Assert.Equal(expected, output); + } + + [Fact] + public void Should_not_log_numbers() + { + var exception = new InvalidOperationException(); + + var logger = sut.CreateLogger("my-category"); + + logger.LogDebug("My numbers are {0} and {1}", 123, 456); + + var expected = + MakeTestCall(w => w + .WriteProperty("logLevel", "Debug") + .WriteProperty("message", "My numbers are 123 and 456") + .WriteProperty("category", "my-category")); + + Assert.Equal(expected, output); + } + [Theory] [InlineData(LogLevel.None, "Debug")] [InlineData(LogLevel.Debug, "Debug")]