Skip to content

Latest commit

 

History

History
78 lines (54 loc) · 3.67 KB

README.md

File metadata and controls

78 lines (54 loc) · 3.67 KB

Destructurama.SystemTextJson

License

codecov Nuget Nuget

GitHub Release Date GitHub commits since latest release (by date) Size

GitHub contributors Activity Activity Activity

Run unit tests Publish preview to GitHub registry Publish release to Nuget registry CodeQL analysis

Adds support for logging System.Text.Json dynamic types as structured data with Serilog. For JSON.NET dynamic types see this repo.

Installation

Install from NuGet:

Install-Package Destructurama.SystemTextJson

Usage

Modify logger configuration:

var log = new LoggerConfiguration().Destructure.SystemTextJsonTypes()

Now any System.Text.Json dynamic object can be represented in the log event's properties:

using System.Text.Json;
using Destructurama;
using Serilog;

var logger1 = new LoggerConfiguration().WriteTo.Console().CreateLogger();
var logger2 = new LoggerConfiguration().Destructure.SystemTextJsonTypes().WriteTo.Console().CreateLogger();

var json = """
    {
      "name": "Tom",
      "age": 42,
      "isDeveloper": true
    }
    """;

var obj = JsonSerializer.Deserialize<dynamic>(json);

logger1.Information("Deserialized without SystemTextJsonTypes(): {@Obj}", obj);

logger2.Information("Deserialized with SystemTextJsonTypes(): {@Obj}", obj);

Console.ReadKey();

Output:

[21:15:52 INF] Deserialized without SystemTextJsonTypes(): {"ValueKind": "Object", "$type": "JsonElement"}
[21:15:53 INF] Deserialized with SystemTextJsonTypes(): {"name": "Tom", "age": 42, "isDeveloper": true}

Benchmarks

The results are available here.