2016-03-04 56 views
1

我指的是優秀的崗位:log4net的,如何將自定義字段(變量)添加到我的日誌

Log4Net, how to add a custom field to my logging

但它並沒有給我的整個解決方案。

沒有問題記錄一個字符串,如「這是一個測試」,但如果我想記錄一個變量,它的響應(空)。

這裏不工作我剪斷代碼:

log4net.GlobalContext.Properties["versionid"] = Variables.IDVERSION; 

這是我的工作剪斷代碼:

log4net.GlobalContext.Properties["versionid"] = " This is a test"; 

雖然IDVERSION是在我的代碼C#系統更新的公共屬性。

有沒有人有想法如何解決這個問題?我認爲我接近解決方案。

+1

https://logging.apache.org/log4net/release/manual/contexts.html你之前或將其分配給log4net的屬性設置後Variables.IDVERSION'的'價值?請注意,log4net不會跟蹤您提供的任何新值 - 您還需要每次都更新log4net屬性。 –

+0

我在第一次嘗試之後分配了變量。現在,我在更新log4net屬性之前分配變量的值,並且它工作得很好。簡單而合乎邏輯。謝謝你的幫助。我應該再考慮一下。:-) – GYCO50

回答

3

此刻的你調用這個:

log4net.GlobalContext.Properties["versionid"] = Variables.IDVERSION; 

酒店將在那一刻持有Variables.IDVERSION值。它不會自動跟蹤對變量Variables.IDVERSION的更新。

因此,如果您在後面的代碼中設置了Variables.IDVERSION,則需要再次對Properties["versionid"]執行賦值。

+0

是的,我錯了,所以加一個給你的答案 –

+0

@Volo沒問題,謝謝! – CodeCaster

+0

很好的解釋。在第一次嘗試中,我在之後分配了變量。現在,我在更新log4net屬性之前分配變量的值,並且它工作得很好。簡單而合乎邏輯。謝謝你的幫助。下一次我應該再想一想。:-) – GYCO50

0

當log4net評估上下文屬性時,它調用屬性值的.ToString()方法。所以如果你有一個引用作爲一個值(我相信你的idversion字段是一個值類型,例如.Int?),你可以擁有動態屬性值。

更多細節

+0

謝謝,這只是一個順序問題,先聲明變量然後刷新log4net自定義屬性。按預期工作。確切地說,log4net非常棒。 – GYCO50

相關問題