【问题标题】:where to write a log file?在哪里写日志文件?
【发布时间】:2011-08-30 15:06:57
【问题描述】:

我正在使用 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) 的值会产生一个空/null 字符串,这至少可以解释为什么我的日志最终会出现在根目录中。

所以真的有两个问题:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    您可以在应用程序池的属性中调整此设置 (source)

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

    另见:

    如果它不起作用,我建议为服务帐户创建一个具有适当权限的文件夹以用于记录目的。

    【讨论】:

    • 完美。我最终选择了你的最后一个选择,但很高兴知道我哪里出错了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 2018-06-03
    相关资源
    最近更新 更多