2011-11-08 16 views
16

enter image description hereडब्ल्यूसीएफ संदेश सामग्री कैसे लॉग करें?

मैंने सोचा कि यह आसान होगा, लेकिन मैं नहीं देख सकता कि संदेश निकायों को लॉग करने के लिए डब्ल्यूसीएफ को कैसे बताना है। मेरे पास है:

<system.diagnostics> 
    <sources> 
    <source name="System.ServiceModel" switchValue="Verbose"> 
     <listeners> 
     <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
      <filter type="" /> 
     </add> 
     <add type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.EntLibLoggingProxyTraceListener,Microsoft.Practices.EnterpriseLibrary.Logging" 
      name="traceListener"> 
      <filter type="" /> 
     </add> 
     </listeners> 
    </source> 
    </sources> 
</system.diagnostics> 
<system.serviceModel> 
    <diagnostics> 
    <messageLogging logEntireMessage="true" logMalformedMessages="true" 
     logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="false" /> 
    </diagnostics> 
    ...etc.., 
    ...etc... 
</system.Model> 
<loggingConfiguration name="" tracingEnabled="true" defaultCategory="General"> 
    <listeners> 
    <add fileName="_trace-xml.log" 
       listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.XmlTraceListenerData,Microsoft.Practices.EnterpriseLibrary.Logging" 
       traceOutputOptions="None" 
       type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.XmlTraceListener,Microsoft.Practices.EnterpriseLibrary.Logging" 
     name="XML Trace Listener" />  
    ...etc... other listeners 
    </listeners> 
    ...etc... 
</loggingConfiguration> 

लेकिन सभी मैं लॉग इन करने के संदेश, नहीं संदेश के मुख्य भाग के बारे में सामान है। लॉग संदेश सामग्री में मुझे बदलने की क्या ज़रूरत है?

उत्तर

0

यदि आपको संदेश निकायों की आवश्यकता है, तो आपको प्रोग्रामिंग रूप से उन्हें स्वयं कैप्चर करना होगा। एक संदेश निरीक्षक स्थापित करने के लिए एक सेवा व्यवहार का उपयोग करें और IDISpatchMessageInspector या IClientMessageInspector के कार्यान्वयन के अंदर संदेशों को कैप्चर करें।

+0

अलास। तो इस ब्लॉग की तरह कुछ ऐसा करता है http://wcfpro.wordpress.com/2011/03/29/iclientmessageinspector/ मुझे * सब कुछ * मुझे चाहिए या मुझे लॉग इन निकायों को लॉग करने के लिए कॉन्फ़िगरेशन या कोड के संदर्भ में और कुछ चाहिए ? –

+0

वह लिंक आपको जो कुछ भी चाहिए वह बहुत अधिक है। एकमात्र चीज यह नहीं दिखाती है कि एंडपॉइंट व्यवहार को कैसे स्थापित किया जाए, जो कि बहुत आसान है (एंडपॉइंट.विहाविर्स.एडड)। – JohnC

+4

यह उत्तर गलत है। 'System.ServiceModel.MessageLogging' के लिए स्रोत कॉन्फ़िगर करना और संदेशों को लॉग इन करने के लिए श्रोता मेरे लिए ठीक काम करता है। कोई संदेश निरीक्षक की आवश्यकता नहीं है। –

25

बस अनुसरण कर इस विवरण मेरे लिए पूरी तरह से काम करता है: 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> 

कोई ज़रूरत नहीं है कि किसी भी कोड लिखने के लिए ...

+4

यदि मैं ऐसा करता हूं तो मुझे डब्ल्यूसीएफ क्या कर रहा है, इस बारे में बहुत सारी जानकारी मिलती है, लेकिन संदेशों की सामग्री के बारे में कुछ भी नहीं: –

+0

यह अजीब है। क्या आप अपने svcviewer.exe का एक स्क्रीनशॉट पोस्ट कर सकते हैं जिसने संदेशों.svclog को लोड किया है और संदेश टैब की सामग्री दिखाता है? – kroonwijk

+0

... एक संदेश पढ़ा गया ... सिस्टम .ServiceModel.Channels.BufferedMessage/48266778 ...

3

मैं एक संस्करण मुद्दा मिल गया। जब डब्ल्यूसीएफ सेवा प्रोजेक्ट को नेट 3.5 के खिलाफ बनाया गया था तो मैंने दर्शक टूल में पूरा संदेश निकाय देखा। नेट 4.0 के खिलाफ निर्मित मैंने कोई संदेश निकाय नहीं देखा।

+1

Ahhh को परेशान करना चाहते हैं! ऐसा लगता है! .. उनमें से एक "आपको कुछ गलत होने पर केवल इसकी आवश्यकता है"। –

+1

लोगों को इसके साथ परेशानी हो रही है .NET 4.0। ध्यान दें, ट्रेसिंग है: '<स्रोत नाम =" System.ServiceModel ">' संदेश हैं: '<स्रोत नाम =" System.ServiceModel.MessageLogging ">' http: // stackoverflow .com/प्रश्न/11264260/WCF है कि कैसे करते हैं-ए-निशान-संदेश-निकायों –

1

http://www.csharptutorial.in/12/csharp-net-wcf-how-to-enable-wcf-tracing-and-messagelogging और सेटअप लॉग मैसेजएटट्रांसपोर्टलेवल = "सत्य" का प्रयास करें। आपकी लॉग फ़ाइल में आप <s:Body> टैग पा सकते हैं। उनके पास पाठ की जांच करें। बाद में आप नया "एक्सएमएल लिस्टर" जोड़ सकते हैं और संदेश निकाय को अधिक लचीला स्वरूप में पाया है।

संबंधित मुद्दे