Serilog: Native Unterstützung für dynamische JSON.NET-Objekte (JObject)

Erstellt am 2. Mai 2013  ·  13Kommentare  ·  Quelle: serilog/serilog

Auf Twitter haben Sie erwähnt, dass die Implementierung über IDestructuringPolicy ziemlich einfach sein sollte
;)

enhancement

Hilfreichster Kommentar

Alle 13 Kommentare

Ich habe versucht, dies über IDestructuringPolicy zum Laufen zu bringen, aber ich fürchte, es wird nicht funktionieren.

Ein flüchtiger Blick durch die Codebasis scheint anzuzeigen (hier https://github.com/serilog/serilog/blob/master/src/Serilog/Parameters/PropertyValueConverter.cs?source=c#L112), dass zuerst PropertyValueConverter behandelt die Objekte als Sammlung (alle JToken s sind IEnumerable ) und macht sich daher nie die Mühe, mit IDestructuringPolicy prüfen.

Ich _glaube_ vielleicht, den IDestructuringPolicy eine höhere Priorität zu geben (zuerst überprüfen und dann auf das Standardverhalten zurückgreifen) könnte einen Ausweg bieten, aber ich kann mich völlig irren, ich habe nur 2 Minuten damit verbracht, mir das anzuschauen Code.

Ich habe vorerst eine schnelle Problemumgehung erstellt, indem ich ... eine Umleitungsebene hinzugefügt habe.

Ich habe eine Klasse namens JObjectWrapper hinzugefügt, die nicht IEnumerable und ich schließe meine JObject damit ein. Jetzt wird mein IDestructuringPolicy aufgerufen und die Welt ist wieder ein glücklicher Ort.

@kkozmic wie ist das geworden? Lohnt es sich, die oben erwähnte Einschränkung aufzuheben? Irgendwelche anderen Gedanken? Danke schön :)

Nun, es ist eine unangenehme Problemumgehung :) Es bringt mich dorthin, wo ich sein muss, aber ich hätte lieber eine elegantere Lösung, wenn möglich.

Vielleicht eine neue Schnittstelle?

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

Außerdem vielleicht:

public interface IDictionaryConversionPolicy

:)

Vorerst geschlossen, aber offen für diese Arbeit, wenn jemand daran interessiert ist, eine PR auszuprobieren. Danke für alle Inputs Leute! :)

@kkozmic Kann ich mir Ihr IDestructuringPolicy ansehen (dasjenige, das mit dem Wrapper funktioniert)?

Tut mir leid, ich habe diesen Code nicht mehr bei mir.

Am Di 03 Feb 2015 um 04:38:45 Harry McIntyre [email protected]
schrieb:

@kkozmic https://github.com/kkozmic Bei jeder Gelegenheit könnte ich einen Blick darauf werfen
Ihre IDestructuringPolicy (diejenige, die mit dem Wrapper funktioniert)?


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/serilog/serilog/issues/30#issuecomment -72500600.

371 wiederholt dieses, ich denke, es ist eines, das wir wiedereröffnen müssen, aber es könnte ein "2.0" sein

Build 1.4.168 entfernt die Einschränkung, die dies umständlich machte; würde gerne ein _Serilog.Extras.JObject_ oder ähnliches sehen, das dies ausnutzt :-)

Danke @Jaben, dass

Schön!

@nblumhardt das ist

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen