Skip to content

destructurama/system-text-json

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Adds support for logging System.Text.Json dynamic types as structured data with Serilog

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages