2012-09-26 6 views
5

क्या किसी विशिष्ट थ्रेड से लॉग प्रविष्टियों को फ़िल्टर करने की संभावना है?log4net - किसी विशिष्ट थ्रेड से संदेशों को अनदेखा करने के लिए confgure

मैं परीक्षण चल रहा है (ग #) के लिए nunit का उपयोग करें:

using System; 
using NUnit.Core; 
using log4net; 

namespace Main 
{ 
    public class Program 
    { 
     public static readonly ILogger log = LogManager.GetLogger(typeof(Program)); 

     static void Main(string[] args) 
     { 
      log.Info("start"); 

      TestPackage package = new TestPackage(@"C:\Test\Main.Tests.dll"); 
      RemoteTestRunner remoteTestRunner = new RemoteTestRunner(); 
      remoteTestRunner.Load(package); 
      TestResult result = remoteTestRunner.Run(new NullListener(), TestFilter.Empty, true, LoggingThreshold.All); 

      log.Info("end"); 
     } 
    } 
} 

इस लॉगिंग मैं मिलता है:

INFO 17:57:24 [1] Main.Program - start 
ERROR 17:57:25 [TestRunnerThread] Main.TestedClass - Exception! Relevant for production/okay in test 
INFO 17:57:26 [1] Main.Program - end 

log4net मुझे एक मेल हर बार एक त्रुटि लॉग होता है भेजता है। अगर मैं परीक्षा चलाता हूं, तो मैं उन मेलों को प्राप्त नहीं करना चाहता हूं। नूनिट थ्रेड-नाम को सेट करता है: "टेस्टरुनर थ्रेड"। मैं इस धागे को कैसे नजरअंदाज कर सकता हूं?

मैं इसे पढ़ लिया है: How to log into separate files per thread with Log4Net? और इस फिल्टर की कोशिश की (और सभी में कोई लॉग मिला):

<filter type="log4net.Filter.PropertyFilter"> 
    <key value="threadId" /> 
    <stringToMatch value="TestRunnerThread" /> 
    <acceptOnMatch value="false" /> 
</filter> 
+1

आप परीक्षण वातावरण में appenders का एक और सेट क्यों कॉन्फ़िगर नहीं करते? –

+0

जिस विधि को आप कोशिश कर रहे हैं उसे थ्रेडनाम को टेस्टरुनर थ्रेड पर सेट करने की आवश्यकता है, लेकिन लॉग 4नेट प्रॉपर्टी जैसे 'log4net.ThreadContext.Properties ["threadId"] = "TestRunnerThread" सेट करने के लिए कुछ भी चाहिए; और यह असंभव है कि नुनिट ऐसा कर रहे हो – sgmoore

+0

@WiktorZychla: यह कार्यक्रम का एक आत्म परीक्षण होगा। कुछ परीक्षण जांचते हैं कि कॉन्फ़िगरेशन सही है या नहीं। प्रोग्राम-विशिष्ट कॉन्फ़िगरेशन और log4net-config दोनों एक ही फ़ाइल (app.config) में हैं। मैं _self-test-mode_ में गतिशील रूप से परिशिष्ट को अक्षम करने का प्रयास करूंगा। – dirk

उत्तर

-2

मैं log4net उपयोग नहीं किया है, लेकिन एक सरल सुझाव होगा की तरह कुछ करने के लिए आईडी को बदलने के लिए [email protected] उस जगह पर जहां आप लॉगिंग ईमेल प्राप्त करने के लिए ईमेल आईडी निर्दिष्ट करते हैं ...

सहमत हैं कि प्रत्येक बार ईमेल न भेजने के लिए कॉन्फ़िगर करने के लिए कुछ होना चाहिए लेकिन यह एक सभ्यता प्राप्त होने तक कामकाज हो सकता है समाधान

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

लिंक http://msdn.microsoft.com/en-us/library/ff664569(v=pandp.50).aspx

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

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