2011-05-30 14 views
5

मान लें मैं एक कॉन्फ़िग फ़ाइल जो इस तरह दिखता है: ... WCF ट्रेसिंग और संदेश लॉगिंग - ट्रेस स्तर चेतावनी

<system.diagnostics> 
    <sources> 
    <source name="System.ServiceModel" switchValue="Warning,ActivityTracing" propagateActivity="true"> 
     <listeners> 
     <add name="ServiceModelTraceListener" /> 
     </listeners> 
    </source> 
    <source name="System.ServiceModel.MessageLogging"> 
     <listeners> 
     <add name="ServiceModelTraceListener" /> 
     </listeners> 
    </source> 
    </sources> 
    <sharedListeners> 
    <add initializeData="LogServer.svclog" type="System.Diagnostics.XmlWriterTraceListener" name="ServiceModelTraceListener" /> 
    </sharedListeners> 
    <trace autoflush="true" /> 
</system.diagnostics> 

इस कॉन्फ़िग फ़ाइल हर गतिविधि फोन करने वाले के खिलाफ प्रदर्शन करती है का उपयोग करते समय सेवा और सेवा के लिए भेजे गए प्रत्येक संबंधित संदेश svclog फ़ाइल में लॉग इन किया जाएगा। सब कुछ ठीक है।

यदि मैं उपर्युक्त सूची से <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true"> (ActivityTracing हटा दिया गया है) से तीसरी पंक्ति को संशोधित करता हूं तो केवल उन गतिविधियों को लॉग किया जाता है जो कम से कम लेबल स्तर की चेतावनी हैं। लेकिन यह अभी भी हर संदेश लॉग है ...

तो क्या उन संदेशों को लॉग इन करने का कोई तरीका है जो कम से कम चेतावनियां हैं? सफल होने वाले संदेश उस पल में बहुत रोचक नहीं हैं, लेकिन असफल गतिविधियों से संबंधित वे संदेश हैं!

+0

<स्रोत नाम = "System.ServiceModel.MessageLogging"> पर switchValue = "चेतावनी" सेट करने का प्रयास – MLF

+0

आप स्वयं इस का समाधान हुआ? यह मेरा प्रश्न भी है .... – codeputer

उत्तर

0

System.ServiceModel.MessageLogging ट्रेस स्विच के लिए भी उपलब्ध है। बस उस source तत्व पर उस अटारी को जोड़ें और इसे Warning पर भी सेट करें और आपको केवल उन संदेशों को लॉग इन किया जाएगा जो चेतावनियों से संबंधित हैं।

+0

अच्छी तरह से 'स्विचवैल्यू' है लेकिन ऐसा कोई प्रभाव नहीं पड़ता है। जब मैं इसे 'चेतावनी' पर सेट करता हूं तब भी प्रत्येक संदेश लॉग होता है। इसके अलावा मुझे लगता है कि यह नहीं होगा - अगर काम कर रहा है - मुझे वह प्रभाव है जो मैं चाहता हूं। मुझे लगता है कि इससे केवल चेतावनी-संदेश (उदा।चेतावनी है कि संदेश लॉग नहीं किया गया था, क्योंकि यह बड़ा है) लॉग इन हैं, और यह वही नहीं है जो मैं चाहता हूं। मैं उन संदेशों को लॉग इन करना चाहता हूं, जो सीधे कम से कम चेतावनी-गतिविधि से संबंधित हैं। – khlr

0

"हर संदेश लॉग इन" को हल करने के लिए लॉगिंग संदेशों से छुटकारा पाने के लिए System.ServiceModel.MessageLogging स्रोत से छुटकारा पाएं।

+0

यही वह नहीं है जिसे मैं ढूंढ रहा हूं। मैं संदेश प्राप्त करना चाहता था, लेकिन सभी नहीं। सिर्फ वे जो चेतावनी से मेल खाते हैं। – khlr

1

संपादित करें नीचे दिए गए विकल्पों से परे संदेशों को फ़िल्टर करने के लिए आप अपना खुद का TraceSource लिखना चाहते हैं।

नीचे एक परियोजना के लिए मैं उपयोग कर रहा हूं। आप आसानी से, अगर यह डीबग में नहीं है संदेशों आप चाहते हैं या शायद छिपाने गतिविधि को फ़िल्टर करने के लिए इसे अनुकूलित कर सकता है आदि

class DB : TraceSource 
{ 
    public DB(string name) : base(name) 
    { 
    } 

    public DB(string name, SourceLevels sourceLevels) : base (name, sourceLevels) 
    { 
    } 

    public void Log(object value) 
    { 
     WriteLine(value); 
    } 

    public void Error(object value) 
    { 
     WriteLine(value, TraceEventType.Error); 
    } 

    public void Error(RecordingResponseData errorResponse) 
    { 
     string errorMessage = "[Error] Code: "+errorResponse.ErrorCode +" Message: "+errorResponse.ErrorMessage; 
     WriteLine(errorMessage, TraceEventType.Error); 
    } 

    public void Warn(object value) 
    { 
     WriteLine(value, TraceEventType.Warning); 
    } 

    public void WriteLine(object value, TraceEventType type = TraceEventType.Information) 
    { 
     TraceEvent(type, 0, value.ToString()); 
    } 


} 

मूल

आपके विकल्प हैं:

  1. गंभीर
  2. त्रुटि
  3. चेतावनी
  4. सूचना
  5. ActivityTracing
  6. शब्दाडंबरपूर्ण
  7. सभी

या की वहाँ एक संयोजन। अगर आपने इसे चेतावनी पर सेट किया है लेकिन अभी भी बहुत सारे संदेश मिल रहे हैं तो आप त्रुटि या गंभीर कोशिश कर सकते हैं।

रेफरी: https://msdn.microsoft.com/en-us/library/ms733025%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

+0

यह अभी भी नहीं है जो मैं ढूंढ रहा था ;-) समस्या _activities_ लॉग की राशि नहीं थी। ये पूरी तरह से चेतावनी और ऊपर फ़िल्टर किए गए थे। मैं जो खोज रहा था वह _messages_ (! = गतिविधियों) को फ़िल्टर करने का एक तरीका था। – khlr

+0

'माइक्रोसॉफ्ट सर्विस ट्रेस व्यूअर' के भीतर खोज बॉक्स और फ़िल्टर हैं जो संदेशों के भीतर फ़िल्टर कर सकते हैं। – ickydime

+0

अन्यथा आप TraceSource का विस्तार कर सकते हैं और WriteLine विधि को ओवरराइड कर सकते हैं। मुझे यह दिखाने के लिए अपना उत्तर अपडेट करने दें कि यह आपके लिए कैसे काम कर सकता है। – ickydime

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