Serilog: Bug d'écriture d'une ligne avec 3 accolades fermantes

Créé le 18 oct. 2016  ·  3Commentaires  ·  Source: serilog/serilog

Écrire du texte brut dans un récepteur RollingFile et produire une ligne de JSON. Il semble convertir les triplets d'accolades fermantes en doubles accolades. Le code ci-dessous devrait l'illustrer. testLogger est un wrapper simple que j'utilise pour me permettre éventuellement de l'envoyer à la fenêtre de débogage au lieu du fichier. Les résultats proviennent du fichier.

var json1 = @"{ ""tester"": ""tester""}" ;
testLogger.Log(json1);

var json2 = @"{ ""test"": ""test"", { ""nest1"": ""un"" }}" ;
testLogger.Log(json2);

var json3 = @"{ ""test"": ""test"", { ""nest1"": ""un"", { ""nest2"": ""deux""}}}" ;
testLogger.Log(json3);

2016-10-17 08:34:48.111 -04:00 [Avertissement] { "test": "test"}
2016-10-17 08:34:48.111 -04:00 [Avertissement] { "test": "test", { "nest1": "one" }}
2016-10-17 08:34:48.111 -04:00 [Avertissement] { "test": "test", { "nest1": "un", { "nest2": "deux"}}

Commentaire le plus utile

Salut, merci pour le rapport !

En effet, l'argument de l'enregistreur est un modèle de message (chaîne de format), et non les données réelles à enregistrer.

Vous pouvez obtenir la sortie que vous voulez avec :

var json1 = @"{ ""test"": ""test""}";
testLogger.Log("{Json:l}", json1);

(Le :l écrira la chaîne comme un littéral, sans guillemets supplémentaires.)

Acclamations,
pseudo

Tous les 3 commentaires

Salut, merci pour le rapport !

En effet, l'argument de l'enregistreur est un modèle de message (chaîne de format), et non les données réelles à enregistrer.

Vous pouvez obtenir la sortie que vous voulez avec :

var json1 = @"{ ""test"": ""test""}";
testLogger.Log("{Json:l}", json1);

(Le :l écrira la chaîne comme un littéral, sans guillemets supplémentaires.)

Acclamations,
pseudo

Gosh c'était terriblement rapide. Merci beaucoup.

De rien, merci 👍

Cette page vous a été utile?
0 / 5 - 0 notes