zoukankan      html  css  js  c++  java
  • WCF 第九章 诊断 消息日志

    跟踪用来记录一个分布式应用的多个组件的流和独立动作。另外一个特性,消息日志,用来记录从客户端/服务端或者到客户端/服务端的消息内容。消息日志可以配置为在服务端捕捉消息,在传输层记录那些不正确的消息。通过消息日志捕捉的数据对很多情况都是有用的,从诊断到创建审计跟踪服务都可以使用。

    开启消息日志

    和跟踪一样,消息日志是基于System.Diagnostics而且默认是关闭的。它可以首先通过System.ServiceModel.MessageLogging跟踪源添加一个处理消息的跟踪监听器(例如,XMLWriterTraceListener)开启。

      列表9.3显示了我们的SelfHost应用程序,配置为使用消息日志。

    列表9.3 在配置文件中开启消息日志

    <system.serviceModel>
    <services.../>
    <behaviors .../>
    <diagnostics>
    <messageLogging logEntireMessage="true" logMessagesAtServiceLevel="true"
    maxMessagesToLog
    ="4000" />
    </diagnostics>
    <system.diagnostics>
    <sources>
    <source name="System.ServiceModel" switchValue="Warning, ActivityTracing"
    propagateActivity
    ="true">
    <listeners>
    <add type="System.Diagnostics.DefaultTraceListener" name="Default">
    <filter type="" />
    </add>
    </listeners>
    </source>
    </sources>
    <sharedListeners>
    <add initializeData="App_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    name
    ="tracelog" traceOutputOptions="Timestamp">
    <filter type="" />
    </add>
    </sharedListeners>
    </system.diagnostics>

      <system.diagnostics>部分看起来与用来开启跟踪的功能类似。我们已经使用System.ServiceModel.MessageLogging添加了一个源,通过这个结构消息可以用来记录,使用同样的监听类处理源,XMLWriterTraceListener之前用来跟踪。

      然而与跟踪不同,通过在一个<messageLogging>元素中确定MessageLogging源发出的消息格式和冗余,添加到<system.serviceModel><diagnostics>配置节点。表9.2显示了messageLogging选项和它们的目的的详细描述。这些选项的任何一个都可能在配置文件中确定,那些将不会使用默认值的将会在表9.2中显示。

    表9.2 messageLogging 选项

    选项 默认值 目的
    logEntireMessage False 如果是true,消息头和消息体都被记录。如果是false,只有消息头会被记录。
    logMalformedMessages False 记录格式不正确的消息。
    logMessagesAtServiceLevel False 记录由服务自身接收或者发送的消息。
    logMessageAtTransportLevel False 记录编码传输前的消息或者直接在从传输通道接收后。
    maxMessagesToLog 10, 000 记录消息的最大数量,超过此数目的日志都会被阻塞。
    maxSizeOfMessageToLog 262,144 将要记录的最大消息大小,字节。如果一条消息超过了这个限制,它将会被忽略而且同时会显示一条警告信息。

      注意在传输层记录的消息可能是加密过的,取决于你选择的绑定或者配置选项。


    作者:DanielWise
    出处:http://www.cnblogs.com/danielWise/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    47. VUE-路由是什么?如何实现页面不请求刷新?
    21. SpringBoot 实现国际化 [i18n]
    20. SpringBoot 默认访问首页 以及 加载静态资源
    46. VUE 脚手架 —— vue ui 管理 以及 查看原始配置
    45. VUE ClI4 创建项目
    44.VUE2 项目目录结构解析 和 Runtime-Compiler和Runtime-only的区别
    2 . Mybatis — 增-删-改
    19. SpringBoot 扩展 SpringMVC功能、 接管、自定义SpringMVC
    17. Thymeleaf 模板 的 使用 和 语法
    16. SpringBoot 模板引擎
  • 原文地址:https://www.cnblogs.com/danielWise/p/1955150.html
Copyright © 2011-2022 走看看