2016-02-27 15 views
6

के लिए एक लॉगर मैं सेरिलोग को एकीकृत कर रहा हूं और मौजूदा बहु-श्रेणी परत और बहु-असेंबली समाधान जो मैंने बनाया है। मैंने उपयोग की पिछली लॉगिंग तकनीक बस घटनाओं के साथ परतों को एक स्ट्रिंग पास कर रहा था। मैं इससे दूर जाना चाहता हूं।एक बहु-परियोजना समाधान

मैंने पढ़ा है कि मैं अपनी लाइब्रेरी में प्रत्येक वर्ग में लॉगर कॉन्फ़िगरेशन लोड करने के लिए app.config फ़ाइल का उपयोग कर सकता हूं लेकिन मैं इसे बहु-असेंबली प्रोजेक्ट में कैसे कर सकता हूं।

मेरे पास शीर्ष स्तर/स्टार्टअप प्रोजेक्ट और दो क्लास लाइब्रेरी प्रोजेक्ट हैं। मैं पूरे कार्यक्रम के लिए दो सिंक के साथ एक ही लॉगर का उपयोग करना चाहता हूं।

ये लेख मैं पाया है अब तक

https://github.com/serilog/serilog/wiki/AppSettings

http://nblumhardt.com/2014/04/xml-configuration-for-serilog/

कोई यह कैसे पूरा करने के लिए समझा सकते हैं?

उत्तर

5

सेरिलोग आपको प्रति प्रोग्राम लॉगर कॉन्फ़िगरेशन का उपयोग करने देता है; हालांकि लॉगिंग क्लास-बाय-क्लास को एडजस्ट करना संभव है, यह आमतौर पर फ़िल्टरिंग और इसी तरह के तथ्य के बाद किया जाता है।

सिफारिश की दृष्टिकोण है:

Program.Main() में पहली बात यह है के रूप में Serilog सेट करें या जहाँ भी आपको अपने ऐप्लिकेशन की प्रवेश बिंदु है:

Log.Logger = new LoggerConfiguration() 
    .WriteTo.Sink1() 
    .WriteTo.Sink2() 
    .CreateLogger(); 

सूचना इस स्थिर Log वर्ग सेट करता है। अपने ऐप में कहीं और अब आप लिख सकते हैं:

Log.Information("This is a message"); 

और संदेश दोनों सिंकों को पारित किया जाएगा। आप स्थिर Log से बच सकते हैं और इसके बजाय ILogger पास कर सकते हैं, लेकिन जब तक आपके पास यहां मजबूत प्राथमिकताएं न हों, स्थिर विकल्प कम परेशानी है।

एक्सएमएल/appSettings कॉन्फ़िगरेशन इनमें से कोई भी नहीं बदलता है। यह सिर्फ, कॉन्फ़िग फ़ाइल को कुछ जानकारी ले जाता है तो के लिए कोड के पहले खंड को बदलने:

Log.Logger = new LoggerConfiguration() 
    .ReadFrom.AppSettings() 
    .CreateLogger(); 

और जोड़ने:

<add key="serilog:write-to:Sink1" /> 
<add key="serilog:write-to:Sink2" /> 

App.config के लिए एक ही प्रभाव पड़ेगा। यदि आप एक्सएमएल से बच सकते हैं तो कोड में कॉन्फ़िगरेशन अक्सर कम परेशानी (कम चलने वाले हिस्सों) होता है।

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