Skip to content

Commit 6982c96

Browse files
committed
added stringification support
1 parent 9f5a6a1 commit 6982c96

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

src/Serilog.Extensions.Logging/Extensions/Logging/SerilogLogger.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@ public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Except
7878
if (logger.BindProperty(property.Key.Substring(1), property.Value, true, out var destructured))
7979
properties.Add(destructured);
8080
}
81+
else if (property.Key.StartsWith("$"))
82+
{
83+
if (logger.BindProperty(property.Key.Substring(1), property.Value?.ToString() ?? "null", true, out var stringified))
84+
properties.Add(stringified);
85+
}
8186
else
8287
{
8388
if (logger.BindProperty(property.Key, property.Value, false, out var bound))

test/Serilog.Extensions.Logging.Tests/SerilogLoggerTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,24 @@ public void CarriesMessageTemplateProperties()
219219
Assert.Empty(selfLog.ToString());
220220
}
221221

222+
[Fact]
223+
public void CarriesMessageTemplatePropertiesWhenStringificationIsUsed()
224+
{
225+
var selfLog = new StringWriter();
226+
SelfLog.Enable(selfLog);
227+
var (logger, sink) = SetUp(LogLevel.Trace);
228+
var array = new[] { 1, 2, 3, 4 };
229+
230+
logger.LogInformation("{$array}", array);
231+
232+
Assert.True(sink.Writes[0].Properties.ContainsKey("array"));
233+
Assert.Equal("\"System.Int32[]\"", sink.Writes[0].Properties["array"].ToString());
234+
Assert.Equal("{$array}", sink.Writes[0].MessageTemplate.Text);
235+
236+
SelfLog.Disable();
237+
Assert.Empty(selfLog.ToString());
238+
}
239+
222240
[Fact]
223241
public void CarriesEventIdIfNonzero()
224242
{

0 commit comments

Comments
 (0)