Serilog: 原生支持 JSON.NET 动态对象 (JObject)

创建于 2013-05-02  ·  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都是IEnumerable ),因此从不费心检查IDestructuringPolicy

我_认为_也许给IDestructuringPolicy更高的优先级(首先检查它,然后回到默认行为)可能会提供一个出路,但我可能完全错了,我只花了 2 分钟看这个代码。

我现在通过添加一个间接级别创建了一个快速解决方法。

我添加了一个名为JObjectWrapper ,它不是IEnumerable并且我用它包装了我的JObject 。 现在我的IDestructuringPolicy被调用,世界又是一个快乐的地方。

@kkozmic这个

好吧,这是一个令人讨厌的解决方法:) 它让我到达了我需要去的地方,但如果可能的话,我宁愿有一个更优雅的解决方案。

也许是新界面?

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

另外,也许:

public interface IDictionaryConversionPolicy

:)

暂时关闭,但如果有人热衷于尝试 PR,可以通过这个来工作。 感谢所有输入的人! :)

@kkozmic有没有机会我可以看看你的IDestructuringPolicy (与包装器一起使用的那个)?

对不起,我没有那个代码了。

2015 年 2 月 3 日星期二凌晨 4:38:45 Harry McIntyre通知@github.com
写道:

@kkozmic https://github.com/kkozmic我有机会可以看看
您的 IDestructuringPolicy(与包装器一起使用的那个)?


直接回复此邮件或在 GitHub 上查看
https://github.com/serilog/serilog/issues/30#issuecomment -72500600。

371呼应这个,我认为是我们重新开放的一个,但可能是一个“2.0”

Build 1.4.168 消除了使这变得尴尬的限制; 很想看到一个 _Serilog.Extras.JObject_ 或类似的利用它:-)

感谢@Jaben解决这个问题!

好的!

@nblumhardt太棒了,谢谢!

此页面是否有帮助?
0 / 5 - 0 等级