c# - Change tracel level dynamically thru trace listener -
हमारे पास एक विशाल C # codebase है जो लॉगिंग करता है। नेट ट्रेसिंग और कस्टम ट्रेस श्रोता। मैं ट्रेसिंग स्तर को गतिशील रूप से बदलने के लिए विकल्प की तलाश कर रहा हूं (चेतावनी से वर्बोस आदि ..) मैं उम्मीद कर रहा था कि ट्रेस श्रोता से ट्रेस स्तर को बदलने का एक तरीका था और मैं ट्रेस स्रोत पर लॉग स्तर बदलने के लिए कस्टम श्रोता को संशोधित कर सकता था। लेकिन यह संभव नहीं लगता है ट्रेस श्रोता (बिना प्रतिबिंब ..) से tracesource ऑब्जेक्ट को पकड़ने का एक आसान तरीका है? मैं ट्रेससोर्स से गतिशील ट्रेसिंग स्तर को लागू करने से बचने की कोशिश कर रहा हूं क्योंकि इसमें बहुत सारे कोड बदलाव शामिल होंगे I कोई भी सुझाव?
यहाँ ट्रेसिंग करना आम तरीका है:
ट्रेससोर्स टीएस = नया ट्रेससोर्स ("टेस्टलोग सोरस"); Ts.TraceEvent (TraceEventType.Warning, 0, "चेतावनी संदेश"); Ts.TraceEvent (TraceEventType.Error, 0, "त्रुटि संदेश"); & LT; system.diagnostics & gt; & LT; सूत्रों & gt; & Lt; स्रोत नाम = "टेस्टलोग सोरस" स्विचनैम = "ग्लोबलस्विच" & gt; & LT; श्रोताओं & gt; & Lt; नाम जोड़ें = "टेस्टलाग" / & gt; & Lt; / श्रोताओं & gt; & Lt; / स्रोत & gt; & Lt; / सूत्रों & gt; & LT; sharedListeners & gt; & Lt; add name = "TestLog" initializeData = "test.svclog" प्रकार = "Library.RolloverXmlTraceListener, लाइब्रेरी, संस्करण = 4.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = 1234 .." / & gt; & Lt; / sharedListeners & gt; & LT; स्विच & gt; & Lt; add name = "GlobalSwitch" मान = "चेतावनी" / & gt; & Lt; / स्विच & gt; & LT; /system.diagnostics>
नहीं, प्रतिबिंब के बिना ऐसा करने का कोई तरीका नहीं है और यह प्रतिबिंब के साथ भी होता है एक परेशानी हो सकती है।
इससे पहले कि यह श्रोताओं को अपनी संपत्ति के अनुसार कॉल करता है और आप ट्रैस लिस्टनर से प्रतिबिंब के बिना स्रोत ट्रेससोर्स ऑब्जेक्ट प्राप्त नहीं कर सकते हैं, इसलिए जो भी आप के लिए पूछा गया है वह नहीं है (और इसका अर्थ नहीं हो सकता है)।
आप हालांकि श्रोताओं में "गतिशील फ़िल्टरिंग" लागू कर सकते हैं।
Comments
Post a Comment