【问题标题】:How to get log4net to generate log files when running as non-administrator user?以非管理员用户身份运行时如何让 log4net 生成日志文件?
【发布时间】:2011-02-20 00:23:50
【问题描述】:

以非管理员用户身份运行的进程无权写入程序文件文件夹。将 log4net 配置为写入非管理员用户有权访问的位置的最佳方法是什么?

理想情况下:

  • 单个配置文件或代码配置适用于 .NET 支持的所有 MS Windows 版本。
  • 支持 MS Windows 服务
  • 支持 log4net 版本 1.2.0.30714(我们必须使用这个版本)

相关问题:

【问题讨论】:

    标签: .net logging service log4net program-files


    【解决方案1】:

    您为什么不能只配置 log4net 以写入您具有适当访问权限的文件夹中的文件?你可以使用 FileAppender 来做到这一点:

    <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <file value="c:/path/log-file.txt" />
        <appendToFile value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
        </layout>
    </appender>
    

    以上内容来自here。来自同一页面:

    <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <file value="${TMP}\log-file.txt" />
        <appendToFile value="true" />
        <encoding value="unicodeFFFE" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
        </layout>
    </appender>
    

    您可以使用环境变量来设置文件的路径。

    【讨论】:

    • 问题是硬编码路径不适用于所有版本的 MS Windows。
    • 你可以使用环境变量。
    • 是的,使用环境变量来确定应该采取的位置。 %USERPROFILE% 应该没问题,或者 %HOMEPATH%。
    • 那可能就行了!我会检查一下。我正在使用 RollingFileAppender,但希望它能与 FileAppender 一样工作。
    • 我无法让环境变量与我正在使用的 log4net 版本一起工作。我会看看是否可以使用最新的,但我们遇到了第三方需要特定版本的 log4net 的问题。
    猜你喜欢
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    相关资源
    最近更新 更多