【问题标题】:Log4net writing to C: instead of APPDATA on Windows 2003Log4net 写入 C: 而不是 Windows 2003 上的 APPDATA
【发布时间】:2011-09-07 09:07:25
【问题描述】:

我有一个 .NET Web 应用程序,它应该使用 log4net 将内容记录到 APPDATA 环境变量中。在我的 XP 开发计算机上它工作得很好,但是当部署到 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."/>

有人知道出了什么问题以及如何解决吗?

【问题讨论】:

  • 遇到同样的问题,只出现在Win2003服务器上,应该是log4net的bug

标签: c# logging iis-6 log4net windows-2003-webserver


【解决方案1】:

APPDATA 要求已创建用户配置文件。网络服务帐户不会出现这种情况。如果您以显式身份运行应用程序池,我相信此身份至少需要登录一次才能创建配置文件。

我建议您不要依赖 Web 应用程序中存在的用户配置文件,而是为您的日志文件选择其他位置。

【讨论】:

  • 那解释了网络服务,但是我自己的帐户已经登录了很多,仍然没有运气。
  • 会不会是这样,而且Web应用程序作为ASPNET而不是作为应用程序池的用户运行,并且ASPNET用户没有配置文件?
  • 你配置APP池来加载用户配置文件了吗? blogs.msdn.com/b/vijaysk/archive/2009/03/08/…
  • 它在 IIS6 上,所以我不能。似乎我必须像您最初建议的那样放弃整个 appdata 方法。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多