Serilog: Secara native mendukung objek dinamis JSON.NET (JObject)

Dibuat pada 2 Mei 2013  ·  13Komentar  ·  Sumber: serilog/serilog

Di Twitter Anda menyebutkan bahwa itu harus cukup mudah untuk diterapkan melalui IDestructuringPolicy
;)

enhancement

Komentar yang paling membantu

Semua 13 komentar

Saya mencoba membuatnya berfungsi melalui IDestructuringPolicy tetapi, saya khawatir itu tidak akan berhasil.

Sekilas melihat melalui basis kode tampaknya menunjukkan (di sini https://github.com/serilog/serilog/blob/master/src/Serilog/Parameters/PropertyValueConverter.cs?source=c#L112) bahwa PropertyValueConverter terlebih dahulu memperlakukan objek sebagai koleksi (semua JToken s adalah IEnumerable ) dan karena itu tidak pernah repot memeriksa IDestructuringPolicy .

Saya _think_ mungkin memberikan IDestructuringPolicy prioritas yang lebih tinggi (memeriksanya terlebih dahulu, dan kemudian kembali ke perilaku default) mungkin menawarkan jalan keluar, tetapi saya mungkin sepenuhnya salah, saya hanya menghabiskan 2 menit melihat ini kode.

Saya membuat solusi cepat untuk saat ini dengan... menambahkan tingkat tipuan.

Saya menambahkan kelas yang disebut JObjectWrapper yang bukan IEnumerable dan saya membungkus JObject dengan itu. Sekarang IDestructuringPolicy dipanggil dan dunia kembali menjadi tempat yang menyenangkan.

@kkozmic bagaimana yang ini? Layakkah kami menghapus batasan yang Anda sebutkan di atas? Ada pemikiran lain? Bersulang :)

baik, ini adalah solusi yang buruk :) Itu membawa saya ke tempat yang saya butuhkan tetapi saya lebih suka memiliki solusi yang lebih elegan daripada itu jika memungkinkan.

Antarmuka baru, mungkin?

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

Juga, mungkin:

public interface IDictionaryConversionPolicy

:)

Tutup untuk saat ini, tetapi terbuka untuk mengerjakan yang ini jika ada yang ingin mencoba PR. Terima kasih untuk semua masukan orang-orang! :)

@kkozmic Adakah kemungkinan saya bisa melihat IDestructuringPolicy (yang berfungsi dengan pembungkus)?

Maaf, saya tidak punya kode itu lagi.

Pada Selasa, 03 Februari 2015 pukul 4:38:45 Harry McIntyre [email protected]
menulis:

@kkozmic https://github.com/kkozmic Ada kemungkinan saya bisa melihatnya
IDDestructuringPolicy Anda (yang berfungsi dengan pembungkus)?


Balas email ini secara langsung atau lihat di GitHub
https://github.com/serilog/serilog/issues/30#issuecomment -72500600.

371 menggemakan yang satu ini, saya pikir ini salah satu yang harus kita buka kembali, tapi mungkin "2.0"

Build 1.4.168 menghilangkan batasan yang membuat ini canggung; akan senang melihat _Serilog.Extras.JObject_ atau serupa yang memanfaatkannya :-)

Terima kasih @Jaben untuk memaku ini!

Bagus!

@nblumhardt itu luar biasa, terima kasih!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat