【问题标题】:.Net Web Service Logging.Net Web 服务日志记录
【发布时间】:2010-09-13 14:18:11
【问题描述】:

我登录 Web 服务的理想情况是记录所有方法调用(身份验证和数据访问)以及传递给它们的参数以及可能发生的错误,并将它们与单个链接将它们与同一呼叫相关联的 ID。此外,理想情况下,我希望能够控制是否记录所有参数,或者是否只记录方法调用。我希望能够控制是记录所有登录还是仅记录失败的登录。同样,在单个请求中检索到的所有信息都将通过一个 id(guid 或其他)链接在一起。

这是我理想的日志记录情况。如果有人知道如何实施所有这些并愿意搬到新罕布什尔州曼彻斯特地区... ;)

但是说真的,有谁知道我将如何将收到的 Web 服务请求与错误或方法调用联系起来?我最初的尝试涉及在 Soap 扩展中搞乱,尝试添加标头(soap 或 html)以及不将任意值从扩展传递到服务本身的内容。我所有的尝试都没有成功。

我们当前的日志记录情况是将身份验证记录到一个表,将方法/业务调用记录到另一个表,将异常记录到另一个表,它们之间没有互连。有时,时间戳很有帮助,但不够可靠,无法有效调试。我们目前正在使用 .Net 2.0,有可能在年底前使用 3.5,因此如果保留对 2.0 功能的回复会更有帮助。

有人有什么想法吗?

【问题讨论】:

  • ...除了克劳斯的解决方案,我还必须更新日志文件夹的权限,将它们更改为“完全控制”。

标签: .net web-services logging soap-extension


【解决方案1】:

如果可能,使用 wcf 并实现消息记录,请参阅 http://msdn.microsoft.com/en-us/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>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多