【问题标题】:Enterprise Library for Logging to Flat File Trace Listener用于记录到平面文件跟踪侦听器的企业库
【发布时间】:2012-11-27 22:07:49
【问题描述】:

需要对服务器(运行 IIS 7.5)中的 Error.log 文件授予什么样的权限,以便将错误写入 Error.log 文件?

我创建了一个名为 ErrorLog 的目录,并在 web.config 中设置了监听器,如下所示。

【问题讨论】:

    标签: enterprise-library error-logging


    【解决方案1】:

    正在使用的 Windows 身份(取决于您的身份验证方式)

    var principal = ClaimsPrincipal.Current;  //normally this reverts to Thread.CurrentPrincipal, but can be changed
    return principal.Identity.Name;
    

    var windowsIdentity = WindowsIdentity.GetCurrent();
                if (windowsIdentity != null)
                {
                    return windowsIdentity.Name;
                }
    

    正在执行的 windows 身份将需要在目录中创建权限并对您的 EL 配置中指定的文件具有写入权限。 您可以使用 config.xml 将文件放置在您喜欢的任何位置。没有路径的文件默认是包含程序集 dll 的启动项目目录。

    在 IIS 中查看网站使用的 应用程序池。池确定 windows 身份。请参阅游泳池的高级设置标签。此处定义了要使用的标识方法。

    【讨论】:

      【解决方案2】:

      我没有看到你的配置示例,但是..

      我发现最好不要在开发之外使用平面文件。事件日志或数据库侦听器更适合生产中的 Web 应用程序。

      如果您必须使用平面文件,则需要授予帐户(对于分配给 Web 应用程序的应用程序池)对应在其中创建文件的目录的写入权限。默认情况下,我认为这是Web 应用程序的 bin 目录,除非您在配置中的文件名中包含路径。

      【讨论】:

      • 我喜欢将 FlatFileTraceListener 用于错误特殊源(假设权限配置正确),因为我想要一个与失败的跟踪侦听器不同的跟踪侦听器,并且我还想要一个简单的跟踪侦听器,它具有更少依赖项(例如数据库、网络、事件日志等)。
      【解决方案3】:

      这可能取决于您的应用程序在什么上下文中运行。应用程序池线程负责写入日志,因此授予与您的应用程序池相同身份的读/写文件夹权限。我认为这是默认的 NETWORKSERVICE。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-26
        • 2012-02-24
        • 1970-01-01
        • 1970-01-01
        • 2010-10-06
        相关资源
        最近更新 更多