2009-06-29 115 views
7

我一直在試圖讓我的asp.net web應用程序log4net記錄沒有成功或任何明顯的錯誤。我試圖用ADONetAppender附加器具有以下配置:Log4Net不記錄或錯誤

<log4net> 
<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="server=" /> 
    <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[Context]) VALUES 
          (@log_date, @thread, @log_level, @logger, @message, @exception, @context)" /> 
    <parameter> 
    <parameterName value="@log_date" /> 
    <dbType value="DateTime" /> 
    <layout type="log4net.Layout.RawTimeStampLayout" /> 
    </parameter> 
    <parameter> 
    <parameterName value="@thread" /> 
    <dbType value="String" /> 
    <size value="32" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%t" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@log_level" /> 
    <dbType value="String" /> 
    <size value="512" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%p" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@context" /> 
    <dbType value="String" /> 
    <size value="512" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%x" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@logger" /> 
    <dbType value="String" /> 
    <size value="512" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%c" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@message" /> 
    <dbType value="String" /> 
    <size value="4000" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%m" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@exception" /> 
    <dbType value="String" /> 
    <size value="2000" /> 
    <layout type="log4net.Layout.ExceptionLayout" /> 
    </parameter> 
</appender> 
<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="ADONetAppender" /> 
</root> 

在我的Global.asax的Application_Start我打電話

log4net.Config.XmlConfigurator.Configure(); 

然後嘗試登錄:

protected static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 
protected void Page_Load(object sender, EventArgs e) 
{    
    log.Info("did I log yet?"); 
} 

就我所知,這一切都沒有做到。

+2

給我的感覺,這些連接字符串憑據是真實的,可能是最好不包括他們在以後的文章... – si618 2009-06-29 10:02:58

+0

我有同樣的問題 - 這是非常令人沮喪的。在數據庫中沒有日誌條目,沒有來自Log4Net的跟蹤錯誤..沒有。 – znelson 2012-04-10 21:05:32

回答

7

你有沒有加入下下配置 - >添加Configsections以下部分

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 

雖然有可能你的log4net的配置設置添加到您的項目的app.config或web.config文件,最好是將它們放置在單獨的配置文件中。除了可維護性的顯而易見的好處之外,log4net還可以在配置文件上放置一個FileSystemWatcher對象來監視它何時更改並動態更新其設置。

要使用一個單獨的配置文件,添加一個名爲Log4Net.config到您的項目文件,以下屬性添加到您的AssemblyInfo.cs文件:

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

注意:爲Web應用程序,這是假定Log4Net.config所在在web根目錄下。確保log4net.config文件在屬性中標記爲「複製到輸出」 - >「始終複製」。

here

+1

因此,如果你做「複製到輸出」不會把log4net.config放到你的web應用的bin目錄以及站點根目錄下嗎? – dotjoe 2012-11-15 21:39:45

28

也可以設置以下的AppSettings以使內部log4net的調試

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

內部調試消息被寫入到控制檯的信息(如果有的話)或微量(例如在視覺調試窗口從sysintenals工作室或dbgview)。這將幫助您解決log4net問題。

+1

謝謝,這幫助我找到了log4net引發的Oracle異常,並立即解決了我的問題。 – 2010-06-14 17:33:09

9

Internal debugging對於log4Net是按照@Pratik建議的方式。要將詳細信息寫入文件,請執行以下操作:

即使您正在使用不同的log4net配置文件,也要在web.config中添加以下內容。

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

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

參考

  1. How do I enable log4net internal debugging?
  2. log4net - Appenders not working in IIS7.5