diff --git a/src/Serilog.Formatting.Compact/serilog-extension-nuget.png b/assets/serilog-extension-nuget.png
similarity index 100%
rename from src/Serilog.Formatting.Compact/serilog-extension-nuget.png
rename to assets/serilog-extension-nuget.png
diff --git a/src/Serilog.Formatting.Compact/Formatting/Compact/CompactJsonFormatter.cs b/src/Serilog.Formatting.Compact/Formatting/Compact/CompactJsonFormatter.cs
index 3a67c4b..992740c 100644
--- a/src/Serilog.Formatting.Compact/Formatting/Compact/CompactJsonFormatter.cs
+++ b/src/Serilog.Formatting.Compact/Formatting/Compact/CompactJsonFormatter.cs
@@ -19,6 +19,7 @@
using Serilog.Events;
using Serilog.Formatting.Json;
using Serilog.Parsing;
+// ReSharper disable MemberCanBePrivate.Global
namespace Serilog.Formatting.Compact
{
@@ -101,6 +102,20 @@ public static void FormatEvent(LogEvent logEvent, TextWriter output, JsonValueFo
JsonValueFormatter.WriteQuotedJsonString(logEvent.Exception.ToString(), output);
}
+ if (logEvent.TraceId != null)
+ {
+ output.Write(",\"@tr\":\"");
+ output.Write(logEvent.TraceId.Value.ToHexString());
+ output.Write('\"');
+ }
+
+ if (logEvent.SpanId != null)
+ {
+ output.Write(",\"@sp\":\"");
+ output.Write(logEvent.SpanId.Value.ToHexString());
+ output.Write('\"');
+ }
+
foreach (var property in logEvent.Properties)
{
var name = property.Key;
diff --git a/src/Serilog.Formatting.Compact/Formatting/Compact/RenderedCompactJsonFormatter.cs b/src/Serilog.Formatting.Compact/Formatting/Compact/RenderedCompactJsonFormatter.cs
index 4b37160..fbe0dd2 100644
--- a/src/Serilog.Formatting.Compact/Formatting/Compact/RenderedCompactJsonFormatter.cs
+++ b/src/Serilog.Formatting.Compact/Formatting/Compact/RenderedCompactJsonFormatter.cs
@@ -17,6 +17,7 @@
using System.IO;
using Serilog.Events;
using Serilog.Formatting.Json;
+// ReSharper disable MemberCanBePrivate.Global
namespace Serilog.Formatting.Compact
{
@@ -83,7 +84,21 @@ public static void FormatEvent(LogEvent logEvent, TextWriter output, JsonValueFo
output.Write(",\"@x\":");
JsonValueFormatter.WriteQuotedJsonString(logEvent.Exception.ToString(), output);
}
+
+ if (logEvent.TraceId != null)
+ {
+ output.Write(",\"@tr\":\"");
+ output.Write(logEvent.TraceId.Value.ToHexString());
+ output.Write('\"');
+ }
+ if (logEvent.SpanId != null)
+ {
+ output.Write(",\"@sp\":\"");
+ output.Write(logEvent.SpanId.Value.ToHexString());
+ output.Write('\"');
+ }
+
foreach (var property in logEvent.Properties)
{
var name = property.Key;
diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj
index baf24e6..167042a 100644
--- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj
+++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj
@@ -19,6 +19,8 @@
https://github.com/serilog/serilog-formatting-compact
git
6.0-recommended
+ Serilog
+ README.md
@@ -26,8 +28,9 @@
-
-
+
+
+
diff --git a/test/Serilog.Formatting.Compact.Tests/CompactJsonFormatterTests.cs b/test/Serilog.Formatting.Compact.Tests/CompactJsonFormatterTests.cs
index e5c06ba..bfc4371 100644
--- a/test/Serilog.Formatting.Compact.Tests/CompactJsonFormatterTests.cs
+++ b/test/Serilog.Formatting.Compact.Tests/CompactJsonFormatterTests.cs
@@ -1,7 +1,11 @@
using System;
+using System.Diagnostics;
+using System.Linq;
using Newtonsoft.Json.Linq;
+using Serilog.Events;
using Xunit;
using Serilog.Formatting.Compact.Tests.Support;
+using Serilog.Parsing;
namespace Serilog.Formatting.Compact.Tests
@@ -77,5 +81,18 @@ public void TimestampIsUtc()
Assert.True(jobject.TryGetValue("@t", out val));
Assert.EndsWith("Z", val.ToObject());
}
+
+ [Fact]
+ public void TraceAndSpanIdsGenerateValidJson()
+ {
+ var traceId = ActivityTraceId.CreateRandom();
+ var spanId = ActivitySpanId.CreateRandom();
+ var evt = new LogEvent(DateTimeOffset.Now, LogEventLevel.Information, null,
+ new MessageTemplate(Enumerable.Empty()), Enumerable.Empty(),
+ traceId, spanId);
+ var json = AssertValidJson(log => log.Write(evt));
+ Assert.Equal(traceId.ToHexString(), json["@tr"]);
+ Assert.Equal(spanId.ToHexString(), json["@sp"]);
+ }
}
}