2016-10-18 51 views
0

我想使用log4net登錄到我的數據庫。我已經安裝使用的NuGet log4net的,並設置了我web.config這樣的:log4net不寫日誌到SQL Server

<configSections>  
    <!-- Log4Net --> 
    <section name="log4net" 
      type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
</configSections> 
<log4net> 
    <!--AdoNet appender is use for write log file into SQL Server--> 
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="1" /> 
     <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <connectionString value="data source=localhost/SVILUPPO;Initial Catalog=MIODB;user id=sa;password=myPassword;" /> 
     <commandText value="INSERT INTO AppLog ([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> 

<!--Add appender which you want to use, You can add more then one appender . Like if you want save log both plain text or sql server ,Add both appender.--> 

    <root> 
     <level value="ALL" /> 
     <appender-ref ref="AdoNetAppender" /> 
     <!--Enable this line if you want write log file into sql server--> 
    </root> 
</log4net> 

然後我在global.asax調用配置設置:

log4net.Config.XmlConfigurator.Configure(); 

而這在我想要得到的頁面和保存日誌

private static ILog log = LogManager.GetLogger(typeof(Login)); 

log.Debug("Debug message"); 
log.Warn("Warn message"); 
log.Error("Error message"); 
log.Fatal("Fatal message"); 

但沒有任何反應:(

任何人都可以幫助我嗎?

+1

正要以下基本內容:這方面的作品,而且這也是AppLog'表是正確定義? –

+0

你在哪裏設置''log4net.Config.XmlConfigurator.Configure();''global.asax'? – Aristos

+0

連接工作正常,我用正常的選擇測試它。該表已正確定義。 –

回答

1

要找到錯誤,最好在log4net中啓用內部調試。 log4net中的錯誤不會發送到您的應用程序。您可以將其寫入日誌,然後瞭解日誌記錄無法正常工作的原因。

在你的app.config:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 

... 

    <system.diagnostics> 
     <trace autoflush="true"> 
      <listeners> 
       <add 
        name="textWriterTraceListener" 
        type="System.Diagnostics.TextWriterTraceListener" 
        initializeData="C:\tmp\log4net.txt" /> 
      </listeners> 
     </trace> 
    </system.diagnostics> 
</configuration> 

Log4net FAQ