我使用log4net将错误记录到SQL Server数据库。它工作正常,但有一个问题。数据库中的日志表包含一个名为Exception
的列,这个列永远不会被填充,但所有其他列都会填充。我的配置设置正常,任何人都可以告诉我为什么会发生这种情况吗?
这是我的web.config
文件
commandText value="INSERT INTO Log ([Date], [Thread], [Level], [Logger],[Message], [Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
答案 0 :(得分:0)
如果要填充错误列,则需要将异常作为参数提供给log.Error方法:
try{
throw new Exception();
catch (Exception ex){
_log.Error("error msg", ex);
}
错误(对象)使用错误级别记录消息对象。
错误(对象,异常)使用错误记录消息对象 包括作为一个传递的Exception的堆栈跟踪的级别 参数。
ErrorFormat(String,Object)记录格式化 具有错误级别的消息字符串。
ErrorFormat(String,Object [])记录格式化的消息字符串 错误级别。
错误格式运用于(的IFormatProvider, String,Object [])使用Error记录带格式的消息字符串 水平。
ErrorFormat(String,Object,Object)记录a 带有错误级别的格式化消息字符串。
ErrorFormat(String,Object,Object,Object)记录格式化 错误级别的消息字符串。
答案 1 :(得分:0)
您需要使用正确的重载,即
void Error(Object message,Exception exception)
在使用this._log.ErrorFormat(ex.Message)
时,您没有传递异常,只是将消息作为字符串传递给log4net。