2017-02-06 42 views
4

我使用實體框架代碼優先,並試圖讓log4Net登錄到我的SQL Server數據庫。我有我的緩衝區大小的值設置爲1,並添加log4Net - 登錄到實體框架數據庫位於單獨的項目

log4net.Config.XmlConfigurator.Configure(); 

Global.asax文件。

我還添加了

​​

然而,還是有什麼輸出到我的SQL Server數據庫。我有我的實體框架東西在一個單獨的項目與ErrorLog數據模型在那裏。我的log4Net設置位於我的web項目的web.config中,Web項目有對我的Entity Framework項目的引用。

下面是我在我的web.config爲log4net的

<log4net> 
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="1" /> 
     <threshold value="ALL" /> 
     <connectionType value="System.Data.EntityClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <connectionString value="data source=(LocalDb)\MSSQLLocalDB;initial catalog=AutoForms;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" /> 
     <commandText value="INSERT INTO ErrorLog ([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> 
    <root> 
     <appender-ref ref="AdoNetAppender" /> 
    </root> 
</log4net> 

我沒有得到任何錯誤。不知道還有什麼要做。我已經嘗試在我的項目的app.config中添加這些log4Net設置,以處理所有實體框架內容,但沒有成功。任何幫助,將不勝感激。謝謝。

回答

2

在挖掘了一下之後,我才弄清楚了這一點。我的連接類型值

<connectionType value="System.Data.EntityClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 

,而不是

<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 

通知的connectionType值。它改變了這個後,它工作。希望它能幫助別人。

0

你必須設置context.Database.Log與委託給EF從你的數據庫輸出任何東西。

如果一個使用n日誌,例如:

context.Database.Log = s=> LogManager.GetLogger("myLogger").Info(s); 

不知道怎麼會用log4net的,但它類似於

+0

感謝您的幫助,伊蘭東西。在發佈之後的幾分鐘內,我能夠弄清楚它,因爲我的web.config中有connectionType值。 – Hao

相關問題