Serilog: Prise en charge native des objets dynamiques JSON.NET (JObject)

Créé le 2 mai 2013  ·  13Commentaires  ·  Source: serilog/serilog

Sur Twitter, vous avez mentionné qu'il devrait être assez simple à mettre en œuvre via IDestructuringPolicy
;)

enhancement

Commentaire le plus utile

Tous les 13 commentaires

J'essayais de faire fonctionner cela via IDestructuringPolicy mais j'ai peur que cela ne fonctionne pas.

Un coup d'œil rapide dans la base de code semble indiquer (ici https://github.com/serilog/serilog/blob/master/src/Serilog/Parameters/PropertyValueConverter.cs?source=c#L112) que PropertyValueConverter premier traite les objets comme une collection (tous les JToken s sont IEnumerable ) et ne prend donc jamais la peine de vérifier avec IDestructuringPolicy .

Je pense que peut-être donner au IDestructuringPolicy une priorité plus élevée (en le vérifiant d'abord, puis en revenant au comportement par défaut) pourrait offrir une issue, mais je peux me tromper complètement, je n'ai passé que 2 minutes à regarder ça code.

J'ai créé une solution de contournement rapide pour l'instant en... ajoutant un niveau d'indirection.

J'ai ajouté une classe appelée JObjectWrapper qui n'est pas IEnumerable et j'enveloppe mon JObject avec. Maintenant, mon IDestructuringPolicy est appelé et le monde est à nouveau un endroit heureux.

@kkozmic comment se passe celui-ci ? Vaut-il la peine de supprimer la limitation que vous mentionnez ci-dessus ? D'autres réflexions ? À votre santé :)

eh bien, c'est une solution de contournement désagréable :) Cela m'amène là où je dois être, mais je préférerais avoir une solution plus élégante que cela si possible.

Nouvelle interface, peut-être ?

public interface ISequenceConversionPolicy
{
   bool TryConvertToSequence(object value, ILogEventPropertyValueFactory propertyValueFactory, out SequenceValue result);
}

Aussi, peut-être :

public interface IDictionaryConversionPolicy

:)

Fermeture pour le moment, mais ouvert à travailler sur celui-ci si quelqu'un souhaite essayer un PR. Merci pour tous les gens d'entrée! :)

@kkozmic Est-ce que je pourrais jeter un œil à votre IDestructuringPolicy (celui qui fonctionne avec le wrapper) ?

Désolé, je n'ai plus ce code avec moi.

Le mar 03 février 2015 à 4:38:45 AM Harry McIntyre [email protected]
a écrit:

@kkozmic https://github.com/kkozmic Toute chance que je pourrais jeter un oeil à
votre IDestructuringPolicy (celle qui fonctionne avec le wrapper) ?

-
Répondez directement à cet e-mail ou consultez-le sur GitHub
https://github.com/serilog/serilog/issues/30#issuecomment -72500600.

371 fait écho à celui-ci, je pense que c'est un pour nous de rouvrir, mais pourrait être un "2.0"

La version 1.4.168 supprime la limitation qui rendait cela gênant ; j'adorerais voir un _Serilog.Extras.JObject_ ou similaire qui en profite :-)

Merci @Jaben d' avoir

Joli!

@nblumhardt c'est génial, merci !

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