C# Log4net写入C:而不是Windows 2003上的APPDATA
我有一个.NET web应用程序,它应该使用log4net将内容记录到APPDATA环境变量中。在我的XP dev计算机上,它工作得很好,但是当部署到Windows 2003服务器时,日志会被写入C:\中。我已经尝试使用网络服务和我自己的用户帐户(具有管理员权限)来运行IIS应用程序池,两者没有区别 log4net appender配置如下所示:C# Log4net写入C:而不是Windows 2003上的APPDATA,c#,logging,iis-6,log4net,windows-2003-webserver,C#,Logging,Iis 6,Log4net,Windows 2003 Webserver,我有一个.NET web应用程序,它应该使用log4net将内容记录到APPDATA环境变量中。在我的XP dev计算机上,它工作得很好,但是当部署到Windows 2003服务器时,日志会被写入C:\中。我已经尝试使用网络服务和我自己的用户帐户(具有管理员权限)来运行IIS应用程序池,两者没有区别 log4net appender配置如下所示: <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="${APPDATA}\appname\log."/>
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<datePattern value="'.'yyyy-MM-dd'.txt'" />
<maxSizeRollBackups value="14" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date	%-5level	%message%newline" />
</layout>
</appender>
我认为写权限没有问题,因为如果我将配置更改为:
<file value="c:\Documents and Settings\username\Application Data\appname\log."/>
有人知道出了什么问题以及如何修复吗?APPDATA需要创建一个用户配置文件。对于网络服务帐户,情况并非如此。如果在显式标识下运行应用程序池,我相信该标识至少需要登录一次才能创建概要文件
我建议您不要依赖web应用程序中存在的用户配置文件,而选择其他位置作为日志文件。这就解释了当时的网络服务,但我自己的帐户已经登录了很多次,仍然没有运气。可能是这样吗,但是web应用程序作为ASPNET运行,而不是作为应用程序池的用户运行,并且ASPNET用户没有配置文件?您是否已将应用程序池配置为加载用户配置文件?在IIS6上,所以我不能。似乎我不得不放弃你最初建议的整个appdata方法。谢谢同样的问题只发生在Win2003服务器上,应该是log4net的一个bug