2015-02-03 6 views
8

मैं लॉगिंग के लिए सेरिलोग का उपयोग कर रहा हूं और 'अलग-अलग फ़ाइलों में लॉग इवेंट को अलग करने का तरीका समझ सकता हूं। उदाहरण के लिए, मैं error_log-ddmmyyyy.txt में त्रुटियों को लॉग करना चाहता हूं और चेतावनी_log-ddmmyyyy.txt पर चेतावनियां बनाना चाहता हूं।सेरिलोग - एकाधिक लॉग फ़ाइलें

Log.Logger = new LoggerConfiguration() 
      .WriteTo.Logger(lc => 
       lc.Filter.ByIncludingOnly(Matching.WithProperty("Level", "Warning")) 
        .WriteTo.RollingFile(
         Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Logs\warn_log-{Date}.txt"), 
         outputTemplate: OutputTemplate)) 
      .WriteTo.Logger(lc => 
       lc.Filter.ByIncludingOnly(Matching.WithProperty("Level", "Error")) 
        .WriteTo.RollingFile(
         Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Logs\error_log-{Date}.txt"), 
         outputTemplate: OutputTemplate)) 
      .CreateLogger(); 

यह केवल काम करता है जब मैं लॉग संदेश में exatcly {स्तर} संपत्ति निर्दिष्ट करें:

यहाँ मेरी लकड़हारा विन्यास चला जाता है।

मैं उपयोग करने के लिए कोशिश कर रहा था:

Matching.WithProperty<LogEventLevel>("Level", l => l == LogEventLevel.Warning) 

लेकिन यह बहुत काम नहीं किया।

+0

@Kiquenet, यह WCF आवेदन है। –

+0

Serilog का उपयोग करके आप अपने कोड में त्रुटियों को लॉग और चेतावनी कैसे लॉग करते हैं? – Kiquenet

+0

@ किकनेट, उदाहरण नीचे दिए गए हैं: अपवाद विवरण के साथ त्रुटि संदेश: 'Log.Logger.Error (उदा। "यहां {डेटा}", कुछ डेटा के साथ त्रुटि संदेश चला जाता है) ' चेतावनी संदेश:' Log.Logger.Warning ("यहां {डेटा}", कुछडेटा के साथ चेतावनी संदेश चला जाता है) ' –

उत्तर

7

मुझे लगता है कि आप की जरूरत:

.ByIncludingOnly(evt => evt.Level == LogEventLevel.Warning) 
+0

... इस सवाल को देखने में दिमाग, संपादन और उत्तर में अंतिम कुछ टिप्पणियां ... https: //stackoverflow.com/questions/47565008/trouble- कनवर्टिंग-सेरिलोग-कॉन्फ़िगरेशन-कोड-लाइन-टू-जेसन-कॉन्फ़िगरेशन/47566787? noredirect = 1 # comment82106820_47566787 – dinotom

18

मैं निम्नलिखित विन्यास का उपयोग करें और यह मेरे लिए काम करता है:

  Log.Logger = new LoggerConfiguration() 
        .MinimumLevel.Debug() 
        .WriteTo.LiterateConsole() 
        .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Information).WriteTo.RollingFile(@"Logs\Info-{Date}.log")) 
        .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Debug).WriteTo.RollingFile(@"Logs\Debug-{Date}.log")) 
        .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Warning).WriteTo.RollingFile(@"Logs\Warning-{Date}.log")) 
        .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error).WriteTo.RollingFile(@"Logs\Error-{Date}.log")) 
        .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Fatal).WriteTo.RollingFile(@"Logs\Fatal-{Date}.log")) 
        .WriteTo.RollingFile(@"Logs\Verbose-{Date}.log") 
        .CreateLogger(); 
+1

प्रश्न के संबंध में उपरोक्त नहीं है, लेकिन अलग-अलग फ़ाइलों में अलग-अलग लॉग स्तर लॉगिंग के लिए प्रस्तुत किए गए स्वच्छ समाधान की वजह से। – mok

+0

उत्थान और टिप्पणी के लिए धन्यवाद :) –

+0

इस तरह की तरह। एकमात्र सवाल यह है कि इसका JSON कॉन्फ़िगरेशन फ़ाइल में अनुवाद कैसे किया जा सकता है? मैंने एक वाक्यविन्यास संदर्भ खोजने की कोशिश की, लेकिन किसी कारण से ऐसा करने में असफल रहा। – Pritorian

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