WCF记录消息

时间:2010-01-22 18:53:43

标签: wcf logging

我有一个WCF服务(由IIS网页托管)正在运行,但我想将更多信息写入日志文件。

我继承了代码,它有一些简单的日志记录到文件。这适用于原始的开发人员机器,但我没有得到任何写出来的东西。请注意,它从配置中读取日志文件路径,我假设它是Web配置,但以防万一我现在硬编码了位置“c:\ temp \ logfile.log”。

我给了ASP的完全权限,然后USERS认为这是权限问题。

此外,我注意到WCF中内置了跟踪和消息日志记录。试过但不确定我是否正确地做了。

关于简单文件编写的任何想法?
我是否应该进行内置日志记录,如果有的话,是否有任何简单的例子?

谢谢!

5 个答案:

答案 0 :(得分:3)

配置记录: 配置记录
1.在Configuration Editor中,选择Diagnostics节点。

2.在右窗格中,单击“启用MessageLogging”。

这将创建ServiceModelMessageLoggingListener和 监听器和源下的System.ServiceModel.MessageLogging节点 文件夹分别。

3.在左侧窗格中,选择Diagnostics节点下的MessageLogging。

4.选择此选项,将LogMessagesAtServiceLevel属性设置为True 从下拉列表中。

5.在左侧窗格中,选择下面的ServiceModelMessageLoggingListener 听众节点。

请注意InitData属性的默认值,该属性设置为 c:\ inetpub \ wwwroot \ WCFService \ web_messages.svclog,其中的位置 消息将被记录。

via WCF Security Guidance

答案 1 :(得分:0)

请改用事件查看器日志记录,但您必须确保安装程序可以创建相应的事件查看器源。

答案 2 :(得分:0)

也许您应该使用Configuration Editor-Tool“SvcConfigEditor.exe”(see description on MSDN)。这允许以安静简单和结构化的方式配置WCF日志记录。

然后可以使用Service Trace Viewer-Tool“SvcTraceViewer.exe”(see on MSDN)分析日志文件。

这两个工具都与Visual Studio捆绑在一起,可以从Microsoft下载。

答案 3 :(得分:0)

要写入日志文件,请确保运行Web应用程序的标识具有对日志目录的写入权限。

IIS7: 您可以在IIS管理控制台中找到该标识。选择Web应用程序正在使用的应用程序池。单击“高级设置”。在属性窗口中,查找标识字段。它可能会说网络服务。这是需要对日志输出文件夹具有写入权限的帐户。

IIS6: 与IIS7相同,只需右键单击应用程序池并选择属性。 IIS6的属性窗口将具有“标识”选项卡。

如果您已在此目录中有一个日志文件,请尝试删除它并让框架创建它。

希望这有帮助。

答案 4 :(得分:0)

<system.serviceModel>

中使用以下内容
<diagnostics>
      <messageLogging
           logEntireMessage="true"
           logMalformedMessages="false"
           logMessagesAtServiceLevel="true"
           logMessagesAtTransportLevel="false"
           maxMessagesToLog="3000"
         maxSizeOfMessageToLog="2000"/>
    </diagnostics>

并在<configuration>

中使用以下内容
<system.diagnostics>
    <sources>
      <source name ="System.ServiceModel" switchValue="Information, ActivityTracing">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <source name ="System.ServiceModel.MessageLogging"
              switchValue="Verbose, ActivityTracing">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <source name ="System.Runtime.Serialization" switchValue="Verbose">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="xml" type="System.Diagnostics.XmlWriterTraceListener"
           traceOutputOptions="LogicalOperationStack"
           initializeData="C:\logs\RestAPISvcLog\Traces.svclog" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>

这将创建日志文件,您可以使用svctracelog viewer(VS附带)直接查看。

有关详细信息,请参阅此内容 - http://msdn.microsoft.com/en-us/library/ms730064(v=vs.110).aspx