2013-07-05 81 views
0

我有log4net記錄到我的數據庫後幾個例子和教程。我有兩件事情不清楚。有關log4net的AdoNetAppender的問題

the log4net page的示例中,它在配置區域中列出了以下節點。

<parameter> 
    <parameterName value="@exception" /> 
    <dbType value="String" /> 
    <size value="2000" /> 
    <layout type="log4net.Layout.ExceptionLayout" /> 
</parameter> 

即使從異常內登錄,此參數似乎會向數據庫傳遞空字符串。

有人可以澄清什麼應該記錄到此字段以及何時?

此外,該示例還將「線程」作爲varchar(255)記錄到數據庫中。我在這個領域得到的是一個整數。我不熟悉線程。我可以將它作爲一個int來存儲嗎?這會在某些情況下成爲一個字符串嗎?

<parameter> 
    <parameterName value="@thread" /> 
    <dbType value="String" /> 
    <size value="255" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%thread" /> 
    </layout> 
    </parameter> 

回答

1

爲了例外填充,你需要使用正確的過載

例如,如果你使用

catch (Exception ex) 
{ 
    log.Error("Error saving details" , ex); 
    ... 
} 

那麼你的數據庫的例外列將被設置爲ex.ToString()

如果使用

log.Error("Error saving details " + ex.ToString()); 

然後異常未填滿

至於線程標識符,這應該是數據庫中的字符串。默認的線程ID是一個整數,但可以明確的命名線程,

var ts = new System.Threading.ThreadStart(InitialiseDatabase); 
var thread = new System.Threading.Thread(ts); 
thread.Name = "Initialising Database"; 

這是一個好主意來命名線程,因爲它使過濾/蔡作馨容易得多。

+0

謝謝!證實兩者都爲我工作。 – BillyPilgrim

相關問題