C# Log4net写入C:而不是Windows 2003上的APPDATA

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"

我有一个.NET web应用程序,它应该使用log4net将内容记录到APPDATA环境变量中。在我的XP dev计算机上,它工作得很好,但是当部署到Windows 2003服务器时,日志会被写入C:\中。我已经尝试使用网络服务和我自己的用户帐户(具有管理员权限)来运行IIS应用程序池,两者没有区别

log4net appender配置如下所示:

<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&#9;%-5level&#9;%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