【问题标题】:Diagnostic Trace Logging Not Working when Deployed to IIS 7部署到 IIS 7 时,诊断跟踪日志记录不起作用
【发布时间】:2017-07-06 23:12:57
【问题描述】:

我正在将一个站点从 IIS 6 迁移到 IIS 7,但我无法查看我的所有日​​志。我的 system.diagnostics 配置如下:

<system.diagnostics>
  <trace autoflush="true"></trace>
  <sources>
    <source name="Assembly1" switchValue="All">
      <listeners>
        <add name="DiagnosticMessageTraceListener"
             type="System.Diagnostics.TextWriterTraceListener"
             traceOutputOptions="ProcessId, ThreadId, DateTime"
             initializeData="E:\Inetpub\logs\App\Assembly1.log" />
      </listeners>
    </source>
    <source name="Assembly2" switchValue="All">
      <listeners>
        <add name="DiagnosticMessageTraceListener"
             type="System.Diagnostics.TextWriterTraceListener"
             traceOutputOptions="ProcessId, ThreadId, DateTime"
             initializeData="E:\Inetpub\logs\App\Assembly2.log" />
      </listeners>
    </source>
    <source name="Assebly3" switchValue="All">
      <listeners>
        <add name="DiagnosticMessageTraceListener"
             type="System.Diagnostics.TextWriterTraceListener"
             traceOutputOptions="ProcessId, ThreadId, DateTime"
             initializeData="E:\Inetpub\logs\App\Assembly3.log" />
      </listeners>
    </source>
    <source name="System.ServiceModel" switchValue="All" propagateActivity="true">
      <listeners>
        <add name="DiagnosticMessageTraceListener"
             type="System.Diagnostics.XmlWriterTraceListener"
             initializeData="E:\Inetpub\logs\App\ServiceTrace.svclog" />
      </listeners>
    </source>
    <source name="System.ServiceModel.MessageLogging" switchValue="All">
      <listeners>
        <add name="DiagnosticMessageTraceListener"
             type="System.Diagnostics.XmlWriterTraceListener"
             initializeData="E:\Inetpub\logs\App\ServiceMessages.svclog" />
      </listeners>
    </source>
  </sources>
  <switches>
    <add name="System.Net" value="Verbose" />
    <add name="System.Net.Sockets" value="Verbose" />
  </switches>
</system.diagnostics>

如果我使用 ASP.Net Web 服务器或本地 IIS 在本地运行应用程序,我将获得所有日志文件。将应用程序部署到 IIS 7 后,我只会得到 System.ServiceModel 日志。我已经验证了该目录存在并且我已经完全控制了每个人。我还重新启动了服务和站点,试图强制刷新日志。我一直在尝试从这件事中获取日志,所以我还安装了 Tracing and Logging Tools 角色服务。我仍然没有收到我的应用程序日志。

我还尝试了一个实现,我登录到 EventLog 而不是跟踪日志文件。这也表现出相同的行为。在本地和部署到本地 IIS 时工作,但在部署到实际服务器时不工作。我登录到应用程序日志,并在我的 IIS7 机器上授予 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application 完全控制权限。

似乎我必须在这里遗漏一些东西。在 IIS 7 中部署时,我无法从这两种不同的日志记录实现中获取任何信息。我​​什至不确定这里有什么共同点。 EventLog.WriteEntry 和 Trace.TraceEvent 都使用 WCF 吗?

【问题讨论】:

    标签: c# asp.net iis-7


    【解决方案1】:

    让每个人都拥有 E:\Inetpub\logs\App\ 的完全访问权限

    关于其他权限问题,了解 IIS 7 对用户帐户的更改,

    http://learn.iis.net/page.aspx/110/changes-between-iis-60-and-iis-7-security/

    【讨论】:

    • Lex Li 的回答会起作用,但存在安全风险,并且提供了对该文件夹的过多访问权限。查看这篇文章stackoverflow.com/questions/18793727/…
    • 跟踪不应长时间保持。完成跟踪后,可以完全删除日志文件夹。
    【解决方案2】:

    将日志文件从Inetpub 目录中移出可能会更开心。我当然做到了,即使我为 IIS 池用户设置了正确的权限。

    试试&lt;initializeData="E:\logs\Apps\ServiceTrace.svclog" /&gt;

    【讨论】:

      猜你喜欢
      • 2016-09-29
      • 1970-01-01
      • 2023-04-10
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      • 2013-03-20
      相关资源
      最近更新 更多