log4net登录到SQL Server数据库

时间:2017-02-04 13:29:24

标签: logging log4net log4net-appender

我使用log4net将错误记录到SQL Server数据库。它工作正常,但有一个问题。数据库中的日志表包含一个名为Exception的列,这个列永远不会被填充,但所有其他列都会填充。我的配置设置正常,任何人都可以告诉我为什么会发生这种情况吗?

这是我的web.config文件

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

2 个答案:

答案 0 :(得分:0)

如果要填充错误列,则需要将异常作为参数提供给log.Error方法:

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

请参阅ILog interface

  

错误(对象)使用错误级别记录消息对象。

     

错误(对象,异常)使用错误记录消息对象   包括作为一个传递的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。

相关问题