2013-05-31 28 views
0

我無法讓log4net正常工作,並且爲log4net安裝了Glimpse,我注意到log4net標籤灰顯,所以我想我沒有正確安裝它,不知道它在哪裏。無法讓log4net正常工作數據庫

在我的AssemblyInfo.cs我:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 

它可能不是必要的,但在Global.asax.cs中我有:

var logConfigFilePath = Server.MapPath("~/log4net.config"); 
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(logConfigFilePath)); 

在我log4net.config我有:

?xml version="1.0"?> 
<configuration> 

    <system.web> 
      <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
    </configSections> 
    <log4net> 
     <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
      <bufferSize value="100" /> 
      <connectionType value="System.Data.SqlClient.SqlConnection, 
    System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
      <connectionString value="data source=SQL_Mulalley;initial catalog=LogFiles;Persist Security Info=True;User ID=***;Password=****;MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/> 
      <commandText value="INSERT INTO SCD4_Log4Net ([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> 
      <level value="FATAL"/> 
      <appender-ref ref="RollingFileAppender"/> 
     </root> 
    </log4net> 
</configuration> 

我這裏得到記錄器:

private static readonly log4net.ILog log = 
      log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

我呼籲在日誌中我的代碼如下:

log.Info(string.Format("User {0} logged in.", model.UserName)); 

沒有出現在我的數據庫,在那裏我已經創建標準log4net的表。
那麼我錯過了什麼?

+0

您的Log4NetLogger類完全沒用,並且失去了類信息。直接使用log4net。 – SLaks

+0

我將其替換爲私有靜態只讀log4net.ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod()。DeclaringType);但仍然不起作用。 – arame3333

+0

我編輯了問題並刪除了不需要的類。 – arame3333

回答

0

您確實聲明瞭appender,但log4net並未實際使用它。

根據你的配置文件,你告訴log4net使用一個名爲RollingFileAppender(即另外,沒有定義)的appender。

更改此:

<appender-ref ref="RollingFileAppender"/> 

要:

<appender-ref ref="AdoNetAppender"/> 

最後要注意本節:

<root> 
     <level value="FATAL"/> 

按照上面的線,你的(默認)appender的不去傳輸任何日誌,除非你做的日誌與Fatal級別:

log.Fatal(string.Format("User {0} logged in.", model.UserName)); 

或更改默認的日誌級別調試:

<root> 
     <level value="DEBUG"/> 
0

它可以是緩衝區大小爲100,因此你沒有打緩衝區限制,讓log4net的寫入到數據庫中。將其更改爲一個用來測試

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="100" /> 

你也可以看到,如果Adoappender拋出任何錯誤通過Internal.Debug切換=真

<appSettings> 
    <add key="log4net.Internal.Debug" value="true"/> 
</appSettings> 

我通常與SQL沒有的正確與否的問題得到連接字符串不正確。