2012-12-12 35 views
0

我有問題通過log4net登錄到數據庫。Log4net到數據庫不工作

  • 用戶有權插入到數據庫
  • 相同的INSERT語句也Management Studio中工作
  • log4net的確實記錄到文件,但沒有到DB
  • 連接字符串是正確的(在其他應用程序一樣)

得到了以下配置:

<log4net debug="true"> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file type="log4net.Util.PatternString" value="Logs\JallaJalla (%date{yyyyMMdd HHmmss}).log" /> 
     <appendToFile value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date %logger %-5level - %message%newline" /> 
     </layout> 
    </appender> 

    <appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender"> 
     <threshold value="DEBUG"/> 
     <bufferSize value="1" /> 
     <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <connectionString value="Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;" /> 
     <commandText value="INSERT INTO [log].[tLogTable] ([Message],[Level]) VALUES (@message, @log_level)" /> 

     <parameter> 
      <parameterName value="@message" /> 
      <dbType value="String" /> 
      <size value="4000" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%message" /> 
      </layout> 
     </parameter> 

     <parameter> 
      <parameterName value="@log_level" /> 
      <dbType value="String" /> 
      <size value="50" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%level" /> 
      </layout> 
     </parameter> 

    </appender> 

    <logger name="ADONetAppender"> 
     <level value="ALL" /> 
     <appender-ref ref="ADONetAppender" /> 
    </logger> 

    <logger name="FileLogger"> 
     <level value="ALL" /> 
     <appender-ref ref="FileAppender" /> 
    </logger> 
</log4net> 

在DB的兩列是:

  • 消息VARCHAR(最大)不爲空
  • 級別VARCHAR(50)NOT NULL

謝謝!

回答

1

,我發現自己的問題......

private static readonly ILog Logger = LogManager.GetLogger("FileLogger"); 

記錄器的名稱被設置爲「FileLogger」 因此通過添加

<appender-ref ref="ADONetAppender" /> 

<logger name="FileLogger"> 
    <level value="ALL" /> 
    <appender-ref ref="FileAppender" /> 
    <appender-ref ref="ADONetAppender" /> 
</logger> 

解決了這個問題!

無論如何,謝謝!

0

我想你忘記了以下添加到您想要使您assamblies記錄:

[assembly: log4net.Config.XmlConfigurator()] 

或代碼:

log4net.Config.XmlConfigurator.Configure();