zoukankan      html  css  js  c++  java
  • WCF中记录SOAP消息日志

    Windows Communication Foundation (WCF) 默认启用消息日志,WCF使用了在System.Diagnostics名称空间中定义的跟踪机制。在这个跟踪机制中,通过在配置文件中配置跟踪源(Trace Sources)和跟踪侦听器(Trace Listenners来记录跟踪数据。

    在WCF中,要启用消息日志,必须在配置文件中(服务端或客户端)添加一个侦听器来侦听源:System.ServiceModel.MessageLogging,并且还需要为 <messagelogging>元素配置好属性。

    配置格式如下:

    复制代码
    <system.serviceModel>
          <diagnostics>
              <messageLogging
                logEntireMessage="true"
                logMalformedMessages="true"
                logMessagesAtServiceLevel="false"
                logMessagesAtTransportLevel="true"
                maxMessagesToLog="2147483647"
                maxSizeOfMessageToLog="2147483647"
            />
          </diagnostics>
    </system.serviceModel>
    <system.diagnostics>
            <trace autoflush="true" />
            <sources>
                <source name="System.ServiceModel.MessageLogging">
                    <listeners>
                        <add name="ServiceModelMessageLoggingListener">
                            <filter type=""/>
                        </add>
                    </listeners>
                </source>            
            </sources>
            <sharedListeners>
                <add initializeData="Messages.svclog" type="System.Diagnostics.XmlWriterTraceListener" name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
                    <filter type=""/>
                </add>
            </sharedListeners>
        </system.diagnostics>
    复制代码

    配置说明:

    messageLogging 

       前四个属性表示启用哪些类型的日志记录,后两个属性表示消息记录最大占用空间值,如果达到最大值,则所有的日志记录活动会中止。

    跟踪源System.ServiceModel.MessageLogging

      可以为源添加不同名称和类型的侦听器(listenner),在这个案例中我们将侦听器命名为:ServiceModelMessageLoggingListener,它是一个共享的侦听器,类型为

    System.Diagnostics.XmlWriterTraceListener,使用这种类型的侦听器,必须要指定输出文件的路径和名称,通过设置来属性initializeData 来指定。如果路径不是绝对路径,则文件位于当前程序目录下。文件后缀名为svclog,这样打开时显示效果会比较好。显示效果如下图所示:

    消息过滤

    可以通过配置消息过滤只记录我们想要跟踪的消息,可以在messageLogging元素中增加子元素filters来实现,如下所示:

     

    复制代码
    <messageLogging logEntireMessage="true"
        logMalformedMessages="true" 
        logMessagesAtServiceLevel="true"
        logMessagesAtTransportLevel="true"
        maxMessagesToLog="420">
        <filters>
            <add nodeQuota="10" xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
                     /soap:Envelope/soap:Header
            </add>
         </filters>
    </messageLogging>
    复制代码

    其中要过滤的内容为我们想要跟踪的消息具有的特征,过滤内容只包含SOAP Header部分。过滤内容支持完整的XPath格式。

  • 相关阅读:
    vuecli3.0 优雅使用svg
    解决vueRouter 跳转相同路由报错
    vue项目中使用 web worker 开启多线程
    项目经常使用的common.js 方法
    vue实现3D词云
    怎么禁止用户点击f12查看数据,查看网页代码,布局样式
    1:vue项目优化总结
    手写一个发布订阅
    vue3.0 reactive 理解
    ifram父子组件传参
  • 原文地址:https://www.cnblogs.com/Alex80/p/9371020.html
Copyright © 2011-2022 走看看