2011-03-16 64 views
1

我正在嘗試將log4net日誌記錄添加到正在寫入的Web應用程序中。我在一個Web服務方法得到這個:當通過Visual Studio調試Web應用程序時,log4net在哪裏寫入日誌文件?

log4net.Config.XmlConfigurator.Configure(); 
log4net.ILog log = log4net.LogManager.GetLogger(typeof(Methods)); 

log.Info("Some information"); 

這在web.config文件:

<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
</configSections> 
<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    <authentication mode="Windows" /> 
    <identity impersonate="true"/> 
</system.web> 
<log4net> 
    <appender name="LogFileAppender" type="log4net.Appender.RollFileAppender"> 
     <file value="log.txt" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="1MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.SimpleLayout" /> 
    </appender> 

    <root> 
     <level value="ALL" /> 
     <appender-ref ref="LogFileAppender" /> 
    </root> 
</log4net>  

我期待的日誌文件出現在bin \目錄中,當我調試它通過Visual Studio 2010,但沒有寫在那裏。該方法無任何例外地成功運行,但我找不到日誌文件。任何想法應該出現在哪裏?

編輯 - 一些額外的信息:

C:\Users\jpope\Documents\Visual Studio 2010\Projects\WebApplication1\WebApplication1\ 

這個目錄的\ bin \子目錄都給出權限: 根據通知區域圖標,在ASP.Net開發服務器在運行SYSTEM,我和管理員完全控制,沒有其他任何人訪問。日誌文件不在上面顯示的目錄或\ bin \子目錄中。

回答

1

如果您願意涉足一些低級別的東西,看看Process Monitor認爲web服務器進程正在嘗試寫入什麼可能會很有趣。至少它會比通過log4net文檔涉水更有趣。

+0

好主意 - 謝謝! – 2011-03-16 12:24:05

+0

在進程監視器中沒有提及任何文件,所以我猜想配置在某種程度上是錯誤的。 – 2011-03-16 13:34:15

0

也許你應該設置asp.net用戶對你的web目錄有寫權限。

+0

@ x16man:是調試Web服務運行的用戶嗎? – 2011-03-16 12:11:30

+0

@ x16man:我看過那個bin目錄,根據windows系統,我和管理員都可以訪問它,而且我們都有完全的控制權。調試Web服務器是否從不同的目錄運行? – 2011-03-16 12:16:16

+0

您的日誌文件將在webservice的文件夾中創建,而不是bin文件夾,您可以。你需要檢查webservice的文件夾。如果aspnet用戶擁有完全控制權。 – x16man 2011-03-16 12:39:23

0

這原來是一個配置問題。切換到FileAppender而不是RollFileAppender可以正常工作。現在我需要找出什麼毛病RollFileAppender配置...

編輯:這是一個RollingFileAppender,而不是一個RollFileAppender

相關問題