Adds support for logging JSON.NET dynamic types as structured data with Serilog. For System.Text.Json dynamic types see this repo.
Install from NuGet:
Install-Package Destructurama.JsonNet
Modify logger configuration:
var log = new LoggerConfiguration().Destructure.JsonNetTypes()
Now any JSON.NET dynamic object can be represented in the log event's properties:
using Destructurama;
using Newtonsoft.Json;
using Serilog;
var logger1 = new LoggerConfiguration().WriteTo.Console().CreateLogger();
var logger2 = new LoggerConfiguration().Destructure.JsonNetTypes().WriteTo.Console().CreateLogger();
var json = """
{
"name": "Tom",
"age": 42,
"isDeveloper": true
}
""";
var obj = JsonConvert.DeserializeObject<dynamic>(json);
logger1.Information("Deserialized without JsonNetTypes(): {@Obj}", obj);
logger2.Information("Deserialized with JsonNetTypes(): {@Obj}", obj);
Console.ReadKey();
Output:
[20:27:59 INF] Deserialized without JsonNetTypes(): [[[]], [[]], [[]]]
[20:27:59 INF] Deserialized with JsonNetTypes(): {"name": "Tom", "age": 42, "isDeveloper": true}
The results are available here.