在哪里写日志文件?

时间:2011-08-30 15:06:58

标签: c# asp.net nlog special-folders network-service

我正在使用nlog写日志文件以进行调试。目前,日志文件位置设置为:

<target 
    name="file" 
    xsi:type="File" 
    fileName="${specialfolder:folder=LocalApplicationData}/x/y.log" 

但是这导致文件被写入c:\x\y.log,而不是%windir%\ServiceProfiles\NetworkService\AppData\Local\x\y.log,正如我期望在NETWORK SERVICE帐户下运行asp.net/IIS。

从Web应用程序检查Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)的值会产生一个空/空字符串,这至少可以解释为什么我的日志在根目录中结束。

真的有两个问题:

我们在NETWORK SERVICE帐户下编写并运行了正确解析此路径的服务。 asp.net/IIS有什么特别之处,这个特殊文件夹没有返回值?

鉴于我的asp.net进程在NETWORK SERVICE帐户下运行,在哪里写日志是一个安全而明智的地方?

1 个答案:

答案 0 :(得分:1)

如果我的知识是正确的,问题是IIS不会加载用户网络服务的配置文件。

您可以在应用程序池的属性(source

中调整此设置

load the user profile of the application pool identity

如果您将此参数设置为true,则对Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)的调用应返回正确的结果。

另见:

如果它不起作用,我建议创建一个具有服务帐户相应权限的文件夹,以便进行日志记录。