2012-08-28 39 views
2

我有以下log4net的配置:log4net的不IIS寫6.0

<log4net> 
<appender name="Console" type="log4net.Appender.ConsoleAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
    <!-- Pattern to output the caller's file name and line number --> 
    <conversionPattern value="%date [%thread] %-5level %ndc - %message%newline" /> 
    </layout> 
</appender> 

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
    <file value="C:/logs/mysystem.log" /> 
    <appendToFile value="true" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <maximumFileSize value="1024MB" /> 
    <maxSizeRollBackups value="30" /> 

    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level - %message%newline" /> 
    </layout> 
</appender> 

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

在本地機器上它工作正常,但是當我部署網站到遠程服務器(IIS 6.0 )儘管系統正在運行,但它不會創建日誌文件。

AppPool身份被配置爲「網絡服務」。

有什麼想法?

回答

0

您可以通過使用機器名稱作爲原則在文件夾上創建ACE來授予對「日誌」文件夾的訪問「網絡服務」訪問權限。將泳池標識更改爲「本地系統」可能會產生不良影響,所以我會避免這種情況。

另一種方法是創建一個域用戶並將該用戶添加到機器IIS_WPG組中。更改池身份以使用此用戶。然後,您可以授予該用戶適當的文件夾訪問權限。

2

當應用程序池配置爲「網絡服務」時,它沒有足夠的權限寫入文件系統,因此日誌文件不會創建。

將應用程序池的標識配置爲「本地系統」,它會正常工作!

+1

值得指出的是,「本地系統」也授予管理員級訪問服務器的地方,而「網絡服務」沒有和「本地系統」沒有訪問網絡,所以任何試圖訪問的ASP代碼,比如說網絡共享將失敗。 – AnthonyWJones

+0

我使用ASP .NET,但我認爲你是對的經典ASP –

+1

在這種情況下,我所說的也適用於ASP.NET。在安全訪問權限方面,ASP經典的唯一區別在於它總是強制模擬腳本執行。 – AnthonyWJones