Serilog: Suporte nativo a objetos dinâmicos JSON.NET (JObject)

Criado em 2 mai. 2013  ·  13Comentários  ·  Fonte: serilog/serilog

No Twitter, você mencionou que deve ser bastante simples de implementar via IDestructuringPolicy
;)

enhancement

Comentários muito úteis

Todos 13 comentários

Eu estava tentando fazer isso funcionar por meio de IDestructuringPolicy , mas temo que não funcione.

Uma olhada superficial na base de código parece indicar (aqui https://github.com/serilog/serilog/blob/master/src/Serilog/Parameters/PropertyValueConverter.cs?source=c#L112) que PropertyValueConverter primeiro trata os objetos como uma coleção (todos os JToken s são IEnumerable ) e, portanto, nunca se preocupa em verificar com IDestructuringPolicy .

_Penso_ que talvez dar a IDestructuringPolicy uma prioridade mais alta (verificar primeiro e depois voltar ao comportamento padrão) pode oferecer uma saída, mas posso estar completamente errado, só passei 2 minutos olhando para isso código.

Eu criei uma solução alternativa rápida por agora ... adicionando um nível de indireção.

Eu adicionei uma classe chamada JObjectWrapper que não é IEnumerable e envolvo meu JObject com ela. Agora meu IDestructuringPolicy é pago e o mundo é um lugar feliz novamente.

@kkozmic, como está

bem, é uma solução desagradável :) Isso me leva onde preciso estar, mas prefiro ter uma solução mais elegante do que isso, se possível.

Nova interface, talvez?

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

Além disso, talvez:

public interface IDictionaryConversionPolicy

:)

Fechando por enquanto, mas aberto para trabalhar com este aqui se alguém quiser tentar um PR. Obrigado por todas as contribuições pessoal! :)

@kkozmic Alguma chance de eu dar uma olhada em seu IDestructuringPolicy (aquele que funciona com o invólucro)?

Desculpe, não tenho mais esse código comigo.

Na terça-feira, 03 de fevereiro de 2015 às 4:38:45, Harry McIntyre [email protected]
escreveu:

@kkozmic https://github.com/kkozmic Posso dar uma olhada em
sua IDestructuringPolicy (aquela que funciona com o wrapper)?

-
Responda a este e-mail diretamente ou visualize-o no GitHub
https://github.com/serilog/serilog/issues/30#issuecomment -72500600.

371 ecoa este, acho que é um para reabrirmos, mas pode ser um "2.0"

A versão 1.4.168 remove a limitação que tornava isso estranho; adoraria ver um _Serilog.Extras.JObject_ ou similar que tire vantagem disso :-)

Obrigado @Jaben por

Agradável!

@nblumhardt isso é incrível, obrigado!

Esta página foi útil?
0 / 5 - 0 avaliações