2017-02-04 70 views
0

我正在使用log4net將錯誤記錄到SQL Server數據庫。它工作正常,但有一個問題。數據庫中的日誌表包含一個名爲Exception的列,該列永遠不會被填充,但所有其他列都會執行此操作。我的配置設置好,誰能告訴我爲什麼會發生這種情況?log4net登錄到SQL Server數據庫

下面是我的web.config文件

commandText value="INSERT INTO Log ([Date], [Thread], [Level], [Logger],[Message], [Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 
+0

您的例外情況如何記錄?你需要確保你使用'void Error(Object message,Exception exception)'方法。 – sgmoore

+0

this._log.ErrorFormat(ex.Message); – user2347338

回答

0

如果你要填寫錯誤列,你需要給異常作爲參數傳遞給log.Error方法在CommandText部分:

try{ 
    throw new Exception(); 
catch (Exception ex){ 
    _log.Error("error msg", ex); 
} 

請參閱ILog interface

錯誤(對象)錯誤(對象)使用錯誤級別記錄消息對象湖

錯誤(對象,異常)記錄一條消息對象與Error 級包括作爲 參數傳遞的異常的堆棧跟蹤。

ErrorFormat(字符串,對象)使用錯誤級別記錄帶格式的 消息字符串。

ErrorFormat(字符串,對象[])記錄帶錯誤級別的格式化消息字符串 。

ErrorFormat(IFormatProvider, String,Object [])記錄格式化的消息字符串,其錯誤級別爲 。

ErrorFormat(字符串,對象,對象)使用錯誤級別記錄格式化的消息字符串 。

ErrorFormat(字符串,對象,對象,對象)使用錯誤級別記錄格式化的 消息字符串。

0

您需要使用正確的過載,即

void Error(Object message,Exception exception) 

當您使用this._log.ErrorFormat(ex.Message),你是不是傳遞異常,但只是作爲一個字符串log4net的消息。

相關問題