Logging log4net日志记录到SQL Server数据库

Logging log4net日志记录到SQL Server数据库,logging,log4net,log4net-appender,Logging,Log4net,Log4net Appender,我正在使用log4net将错误记录到SQL Server数据库中。它工作正常,但有一个问题。数据库中的日志表包含一个名为Exception的列,该列从不填充,但所有其他列都会填充。我的配置设置正常,有人能告诉我为什么会发生这种情况吗 这是我的web.config文件中的commandtext部分 commandText value="INSERT INTO Log ([Date], [Thread], [Level], [Logger],[Message], [Exception]) VALUE

我正在使用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)" />

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

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

错误(对象)记录具有错误级别的消息对象

错误(对象,异常)记录包含错误的消息对象 级别,包括作为 参数。

ErrorFormat(字符串、对象)记录格式化的 具有错误级别的消息字符串

ErrorFormat(String,Object[])记录格式化的消息字符串 具有错误级别

ErrorFormat(IFormatProvider, 字符串,对象[])记录带错误的格式化消息字符串 水平

ErrorFormat(字符串、对象、对象)记录 具有错误级别的格式化消息字符串

ErrorFormat(字符串、对象、对象、对象)记录格式化的 具有错误级别的消息字符串


您需要使用正确的重载,即

void Error(Object message,Exception exception)

当您使用
this.\u log.ErrorFormat(ex.Message)
时,您没有将异常传递给log4net,而是将消息作为字符串传递给log4net。

如何记录异常?您需要确保使用的是
void Error(对象消息,异常异常)
方法;