2010-08-22 50 views
4

我配置了log4net並且在本地機器上正常工作,但是當我部署到我的主機(godaddy)時,它失敗了。我在我的開發機器和主機上使用相同的數據庫/配置文件。我的log4net參考設置爲複製本地,並且log4net.dll,.pdb和.xml存在於主機的bin中。這是一個asp.net mvc應用程序。Log4Net在開發機器上工作,在部署到共享主機時失敗(使用相同的db/connstring)

編輯:沒有引發異常,並且應用程序運行正常(減去記錄)

這是SQL Server上運行2005 的虛擬主機提供商是IIS 7我的配置的

主要細節是:

<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="AdoNetAppender" /> 
</root> 

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

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

任何人有任何想法檢查的東西?

+0

是應用程序的功能,只是日誌記錄不工作? – Tahbaza 2010-08-22 17:54:27

+0

該應用運行正常 - 僅記錄中斷 – jlnorsworthy 2010-08-22 18:22:37

+0

您是否收到引發的異常? – 2010-08-22 18:32:02

回答

7

根據我的經驗,log4net通常會吞下任何內部錯誤,只會導致日誌語句不會產生任何結果。

您可能想要嘗試的是啓用log4net的內部日誌記錄。您可以通過添加以下到您appSettings部分做到這一點:

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

此設置屬性LogLog.InternalDebuggingtrue。 log4net現在將記錄到標準輸出和錯誤流以及配置的跟蹤偵聽器。

可以使用following configuration捕捉記錄到跟蹤任何消息:

<system.diagnostics> 
    <trace autoflush="false" indentsize="4"> 
    <listeners> 
     <add name="myListener" 
     type="System.Diagnostics.TextWriterTraceListener" 
     initializeData="c:\TextWriterOutput.log" /> 
     <remove name="Default" /> 
    </listeners> 
    </trace> 
</system.diagnostics> 

通過log4net的記錄的所有消息在內部將出現在TextWriterOutput.log。如果在將跟蹤偵聽器添加到配置時收到SecurityException,則很可能該apppool身份沒有足夠的權限在指定位置創建文件(例如:c:\)。嘗試其他位置或給予應用程序標識足夠的權利。

+0

感謝羅納德的幫助。我假設我需要添加DebugListener來將例外​​記錄到文件中?出於某種原因,我可以通過使用TextWriter並寫入文件在共享主機上創建文件,但在嘗試指定相同路徑並將其添加爲DebugListner時(在清除現有偵聽器之後),我得到安全異常我知道這一點真的是一個單獨的問題,但你有什麼想法嗎? – jlnorsworthy 2010-08-23 00:08:20

+0

您對這個SecurityException有更多的信息嗎?可能您的應用程序池標識沒有足夠的權限寫入指定的位置。 – 2010-08-23 07:54:38

+0

,同樣可能:應用程序池標識對數據庫沒有權限... – 2010-08-23 11:14:16

1

我剛纔已經能夠通過http://svn.apache.org/viewvc/logging/log4net/trunk/

顯然,這個問題已經解決很久以前從SVN倉庫下載和使用log4net的最新版本(版本1072765)來解決這個問題,但誰知道什麼時候log4net的1.2 .11將被釋放。

相關問題