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

发布于 2024-12-03 17:15:17 字数 920 浏览 1 评论 0原文

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

log4net 附加程序配置如下所示:

<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."/>

任何人都知道出了什么问题以及如何修复它?

I have a .NET web application that should log stuff to the APPDATA environment variable with log4net. On my XP dev computer it works just fine, but when deployed to a Windows 2003 server the logs are written to C:\ instead. I've tried using both Network Service and my own user account (with admin rights) for running the IIS app pool and there's no difference.

The log4net appender config looks like this:

<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>

I don't think there's a problem with write permissions, because it works if I change the config to this:

<file value="c:\Documents and Settings\username\Application Data\appname\log."/>

Anyone has any idea what's wrong and how to fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吃兔兔 2024-12-10 17:15:17

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

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

The APPDATA requires a user profile to have been created. This won't be the case for the Network Service account. If you run the Application Pool under an explicit identity, I believe this identity will need to have logged in at least once to create the profile.

I suggest you don't rely on the existence of a user profile in web applications, and choose some other location for your log files.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文