1
我想弄清楚如何將LogEventInfo
對象中的所有屬性記錄到JSON格式的字符串。每issue on github,我試圖做這樣的事情:佈局NLog屬性爲JSON?
<target xsi:type="ColoredConsole" name="coloredConsole">
<layout xsi:type="JsonLayout">
<attribute name="timestamp" layout="${longdate}"/>
<attribute name="level" layout="${level:uppercase=true}"/>
<attribute name="exception" layout="${onexception:${exception:format=tostring}}" />
<attribute name="properties" encode="false">
<layout type="JsonLayout">
<attribute name="properties" layout="${all-event-properties}" />
</layout>
</attribute>
</layout>
</target>
...但不幸的是,我的屬性包含複雜的對象(我有「性」和「標籤」,其中「屬性的名稱兩個屬性「是IDictionary<string, object>
,而」tags「是LogEventInfo.Properties
屬性中的IList<string>
),它們不會序列化。我最終的東西類似這樣的:
{ "timestamp": "2017-05-18 08:41:28.7730", "level": "INFO", "properties": { "properties": "properties=System.Collections.Generic.Dictionary`2[System.String,System.Object], tags=System.Collections.Generic.List`1[System.String]" } }
我期待(和希望)序列化JSON字典,會給我的日誌消息的情況下,但顯然這不是我所得到。
如何正確地序列化我的LogEventInfo
對象中的屬性?
當我跟着這個我得到的輸出爲{ 「CORRELATION_ID」: 「a03734dd-b0ca-4bcf-83f2-e9d814272e32」, 「ENV」, 「開發」, 「屬性」: 「{」 KEY1" :「value1」,「key2」:「value2」}「 },但我的要求是」correlation_id「:」a03734dd-b0ca-4bcf-83f2-e9d814272e32「, 」env「,」dev「, 「Key1」:「value1」, 「key2」:「value2」, 「keyn」:「valuen」 } 其中KEY1-VALUE1,KEY2-VALUE2和其餘部分是動態的任何人都可以幫助我這 –
@ Gowtham.K.Reddy我認爲這與你的JSON序列化器有關。我使用JSON.NET,但我認爲標準的.NET DataContractJsonSerializer會爲您提供您描述的結果。 –
另外,動態是魔鬼。要在每個機會''避免 –