为什么AdoNetAppender没有将日志消息写入数据库?

时间:2010-07-06 03:39:44

标签: c# .net log4net

我正在使用AdoNetAppender 这是我的配置文件的一部分:

 <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
  <bufferSize value="1" /> 
  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <connectionString value="[we will set this automatically at runtime]" />
  <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
   <parameter>
    <parameterName value="@log_date"/> <dbType value="DateTime"/> <layout type="log4net.Layout.RawTimeStampLayout"/>
  </parameter>
       <parameter>
    <parameterName value="@thread"/> <dbType value="String"/> <size value="255"/> <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%thread"/>
    </layout>
  </parameter>
  <parameter>
     <parameterName value="@log_level"/> <dbType value="String"/> <size value="50"/> <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%level"/>
    </layout>
  </parameter>
   <parameter>
     <parameterName value="@logger"/> <dbType value="String"/> <size value="255"/> <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%logger"/>
    </layout>
  </parameter>
   <parameter>
     <parameterName value="@message"/> <dbType value="String"/> <size value="4000"/> <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%message"/>
    </layout>
  </parameter>
   <parameter>
     <parameterName value="@exception"/> <dbType value="String"/> <size value="2000"/> <layout type="log4net.Layout.ExceptionLayout"/>
  </parameter>
</appender>

这是我记录消息的代码:

 private static readonly ILog fifthlog = LogManager.GetLogger("ADONetAppender"); fifthlog.Info("this is db log");

我也在使用其他的附加程序,比如RollingFileAppender,它们工作正常,但是这个没有,因为当我在我的sql server中执行此查询select * from Log时,表是空的。我的数据库连接成功,因为我测试了连接。怎么了?

2 个答案:

答案 0 :(得分:1)

为了真正了解正在发生的事情,您应该启用内部调试:

http://log4net.sourceforge.net/release/1.2.0.30316/doc/manual/faq.html#internalDebug

我想到的一些事情:

  • 数据库的权限问题(已由 devstuff 指出)
  • 如果您使用集成安全性:可能是您与调用者而不是主机进程连接(例如,如果您有sharepoint环境,则会发生这种情况。)
  • 使用您的某个参数转换问题(虽然这似乎不太可能)

答案 1 :(得分:0)

该帐户是否具有Log表的插入权限?

这个appender的配置输出级别是什么?