Skip to content

Commit 3bc9237

Browse files
authored
Merge pull request #649 from nanny07/fix/643
Fix TraceId and SpanId with null value
2 parents 253132a + 3904789 commit 3bc9237

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/Output/StandardColumnDataGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ public KeyValuePair<string, object> GetStandardColumnNameAndValue(StandardColumn
5151
case StandardColumn.Level:
5252
return new KeyValuePair<string, object>(_columnOptions.Level.ColumnName, _columnOptions.Level.StoreAsEnum ? (object)logEvent.Level : logEvent.Level.ToString());
5353
case StandardColumn.TraceId:
54-
return new KeyValuePair<string, object>(_columnOptions.TraceId.ColumnName, logEvent.TraceId.ToString());
54+
return new KeyValuePair<string, object>(_columnOptions.TraceId.ColumnName, logEvent.TraceId?.ToString());
5555
case StandardColumn.SpanId:
56-
return new KeyValuePair<string, object>(_columnOptions.SpanId.ColumnName, logEvent.SpanId.ToString());
56+
return new KeyValuePair<string, object>(_columnOptions.SpanId.ColumnName, logEvent.SpanId?.ToString());
5757
case StandardColumn.TimeStamp:
5858
return GetTimeStampStandardColumnNameAndValue(logEvent);
5959
case StandardColumn.Exception:

test/Serilog.Sinks.MSSqlServer.Tests/Sinks/MSSqlServer/Output/StandardColumnDataGeneratorTests.cs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,25 @@ public void GetStandardColumnNameAndValueForTraceIdReturnsLogLevelKeyValue()
282282
Assert.Equal("34898a9020e0390190b0982370034f00", result.Value);
283283
}
284284

285+
[Fact]
286+
public void GetStandardColumnNameAndNullValueForTraceIdReturnsLogLevelKeyValue()
287+
{
288+
// Arrange
289+
var traceId = default(ActivityTraceId);
290+
var logEvent = new LogEvent(
291+
new DateTimeOffset(2020, 1, 1, 0, 0, 0, 0, TimeSpan.Zero),
292+
LogEventLevel.Debug, null, new MessageTemplate(new List<MessageTemplateToken>() { new TextToken("Test message") }),
293+
new List<LogEventProperty>(), traceId, ActivitySpanId.CreateRandom());
294+
SetupSut(new MSSqlServer.ColumnOptions(), CultureInfo.InvariantCulture);
295+
296+
// Act
297+
var result = _sut.GetStandardColumnNameAndValue(StandardColumn.TraceId, logEvent);
298+
299+
// Assert
300+
Assert.Equal("TraceId", result.Key);
301+
Assert.Null(result.Value);
302+
}
303+
285304
[Fact]
286305
public void GetStandardColumnNameAndValueForSpanIdReturnsLogLevelKeyValue()
287306
{
@@ -301,6 +320,25 @@ public void GetStandardColumnNameAndValueForSpanIdReturnsLogLevelKeyValue()
301320
Assert.Equal("0390190b09823700", result.Value);
302321
}
303322

323+
[Fact]
324+
public void GetStandardColumnNameAndNullValueForSpanIdReturnsLogLevelKeyValue()
325+
{
326+
// Arrange
327+
var spanId = default(ActivitySpanId);
328+
var logEvent = new LogEvent(
329+
new DateTimeOffset(2020, 1, 1, 0, 0, 0, 0, TimeSpan.Zero),
330+
LogEventLevel.Debug, null, new MessageTemplate(new List<MessageTemplateToken>() { new TextToken("Test message") }),
331+
new List<LogEventProperty>(), ActivityTraceId.CreateRandom(), spanId);
332+
SetupSut(new MSSqlServer.ColumnOptions(), CultureInfo.InvariantCulture);
333+
334+
// Act
335+
var result = _sut.GetStandardColumnNameAndValue(StandardColumn.SpanId, logEvent);
336+
337+
// Assert
338+
Assert.Equal("SpanId", result.Key);
339+
Assert.Null(result.Value);
340+
}
341+
304342
[Fact]
305343
public void GetStandardColumnNameAndValueForLogLevelReturnsLogLevelKeyValueAsEnum()
306344
{

0 commit comments

Comments
 (0)