Serilog: يدعم أصلاً كائنات JSON.NET الديناميكية (JObject)

تم إنشاؤها على ٢ مايو ٢٠١٣  ·  13تعليقات  ·  مصدر: serilog/serilog

ذكرت على Twitter أنه يجب أن يكون التنفيذ واضحًا إلى حد ما عبر IDestructuringPolicy
؛)

enhancement

التعليق الأكثر فائدة

ال 13 كومينتر

كنت أحاول الحصول على هذا العمل عبر IDestructuringPolicy لكنني أخشى أنه لن ينجح.

يبدو أن نظرة سريعة عبر قاعدة الكود تشير (هنا https://github.com/serilog/serilog/blob/master/src/Serilog/Parameters/PropertyValueConverter.cs؟source=c#L112) أن PropertyValueConverter أولاً يعامل الكائنات على أنها مجموعة (كل JToken s هي IEnumerable ) وبالتالي لا يكلف نفسه عناء التحقق من IDestructuringPolicy .

أعتقد أن إعطاء IDestructuringPolicy أولوية أعلى (التحقق من ذلك أولاً ، ثم الرجوع إلى السلوك الافتراضي) قد يوفر مخرجًا ، لكن قد أكون مخطئًا تمامًا ، لقد أمضيت دقيقتين فقط في النظر إلى هذا الشفرة.

لقد أنشأت حلاً سريعًا في الوقت الحالي عن طريق ... إضافة مستوى من المراوغة.

لقد أضفت فصلًا يسمى JObjectWrapper وهو ليس IEnumerable وقمت بلف JObject به. الآن تم الاتصال بي IDestructuringPolicy وأصبح العالم مكانًا سعيدًا مرة أخرى.

kkozmic كيف حال هذا؟ هل يستحق منا إزالة القيد الذي ذكرته أعلاه؟ أي أفكار أخرى؟ هتافات :)

حسنًا ، إنه حل بديل سيئ :) إنه يوصلني إلى حيث أحتاج إلى أن أكون ولكني أفضل أن يكون لدي حل أكثر أناقة من ذلك إذا أمكن.

واجهة جديدة ، ربما؟

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

أيضا ، ربما:

public interface IDictionaryConversionPolicy

:)

مغلق الآن ، لكن منفتحًا على العمل من خلال هذا إذا كان أي شخص حريصًا على تجربة العلاقات العامة. شكرا لجميع الناس الإدخال! :)

kkozmic هل يمكنني إلقاء نظرة على IDestructuringPolicy (الذي يعمل مع الغلاف)؟

عذرًا ، لم يعد لدي هذا الرمز معي.

يوم الثلاثاء 03 فبراير 2015 الساعة 4:38:45 صباحًا Harry McIntyre [email protected]
كتب:

kkozmic https://github.com/kkozmic أي فرصة يمكنني إلقاء نظرة عليها
IDestructuringPolicy (الذي يعمل مع الغلاف)؟

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/serilog/serilog/issues/30#issuecomment -72500600.

371 يردد هذا ، أعتقد أنه واحد لنا لإعادة فتحه ، ولكن قد يكون "2.0"

يزيل الإصدار 1.4.168 القيود التي جعلت هذا الأمر محرجًا ؛ أحب أن أرى _Serilog.Extras.JObject_ أو ما شابه ذلك يستفيد منه :-)

شكرا Jaben لتسمير هذا!

لطيف - جيد!

nblumhardt هذا رائع ، شكرًا!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات