.NET Web服务日志记录

7
我的理想日志记录方式是记录所有方法调用(包括身份验证和数据访问)以及传递给它们的参数和可能发生的错误,并将它们与一个单一的ID相关联,以便将它们关联到同一次调用。此外,我希望能够控制是否记录所有参数,或仅记录方法调用。我希望能够控制是否记录所有登录,还是只记录失败的登录。同样,从单个请求检索的所有信息将通过一个ID(GUID或其他方式)链接在一起。
这是我的理想记录方式。如果有人知道如何实现所有这些并愿意搬到新罕布什尔州曼彻斯特地区...... ;)
但说真的,有人知道如何将收到的Web服务请求与错误或方法调用绑定吗?我的初步尝试涉及在Soap Extension中进行测试,尝试添加一个头(soap或html)等等,以将扩展中的任意值传递到服务本身。我所有的尝试都没有成功。
我们目前的日志记录情况是将认证记录到一个表中,将方法/业务调用记录到另一个表中,并将异常记录到另一个表中,它们之间没有相互连接。时间戳有时很有用,但不足以有效地进行调试。我们目前使用的是.NET 2.0,到年底有可能会使用3.5,因此如果回复保持在2.0功能方面,则更有帮助。
有人有什么想法吗?

除了Claus的解决方案之外,我还必须更新日志文件夹的权限,将它们更改为“完全控制”。 - Artie Leech
1个回答

11

如果可能的话,请使用WCF并实现消息记录,参见http://msdn.microsoft.com/zh-cn/library/ms730064.aspx

<system.diagnostics>
  <sources>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
                 <add name="messages"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="c:\logs\messages.svclog" />
          </listeners>
      </source>
    </sources>
</system.diagnostics>

<system.serviceModel>
  <diagnostics>
    <messageLogging 
         logEntireMessage="true" 
         logMalformedMessages="false"
         logMessagesAtServiceLevel="true" 
         logMessagesAtTransportLevel="false"
         maxMessagesToLog="3000"
         maxSizeOfMessageToLog="2000"/>
  </diagnostics>
</system.serviceModel>

1
你可能想使用SvcTraceViewer程序来分析输出。(http://msdn.microsoft.com/en-us/library/ms732023.aspx#sectionSection1) - Henrik Aasted Sørensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接