2010-04-15 11 views
5

मुझे गतिशील रूप से लॉगर्स बनाने की आवश्यकता है, इसलिए from here पोस्ट और परावर्तक की सहायता से मैंने गतिशील रूप से लॉगर्स बनाने में कामयाब रहा है, लेकिन मुझे यह जानना है कि मुझे किसी और चीज के बारे में चिंता करनी चाहिए ... मुझे नहीं पता प्रभाव यह कर सकते हैं।log4net: गतिशील रूप से लॉगर बनाना, क्या मुझे किसी चीज़ के बारे में चिंता करनी चाहिए?

public static ILog GetDyamicLogger(Guid applicationId) 
    { 
     Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); 
     RollingFileAppender roller = new RollingFileAppender(); 
     roller.LockingModel = new log4net.Appender.FileAppender.MinimalLock(); 
     roller.AppendToFile = true; 
     roller.RollingStyle = RollingFileAppender.RollingMode.Composite; 
     roller.MaxSizeRollBackups = 14; 
     roller.MaximumFileSize = "15000KB"; 
     roller.DatePattern = "yyyyMMdd"; 
     roller.Layout = new log4net.Layout.PatternLayout(); 
     roller.File = "App_Data\\Logs\\"+applicationId.ToString()+"\\debug.log"; 
     roller.StaticLogFileName = true; 

     PatternLayout patternLayout = new PatternLayout(); 
     patternLayout.ConversionPattern = "%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"; 
     patternLayout.ActivateOptions(); 

     roller.Layout = patternLayout; 
     roller.ActivateOptions(); 
     hierarchy.Root.AddAppender(roller); 

     hierarchy.Root.Level = Level.All; 
     hierarchy.Configured = true; 

     DummyLogger dummyILogger = new DummyLogger(applicationId.ToString()); 
     dummyILogger.Hierarchy = hierarchy; 
     dummyILogger.Level = log4net.Core.Level.All; 
     dummyILogger.AddAppender(roller); 

     return new LogImpl(dummyILogger); 
    } 

    internal sealed class DummyLogger : Logger 
    { 
     // Methods 
     internal DummyLogger(string name) 
      : base(name) 
     { 
     } 
    } 

चीयर्स।

+1

आपको उस कोड का उपयोग करने के लिए बहुत अच्छा कारण चाहिए और इसके बजाय कॉन्फ़िगरेशन फ़ाइल का उपयोग नहीं करना चाहिए :-) –

+3

कारण यह है कि मेरा एप्लिकेशन रनटाइम पर गतिशील रूप से समुदायों को बनाता है, और मैं प्रत्येक के लिए एक लॉग फ़ाइल बनाए रखना चाहता हूं। – vtortola

उत्तर

2

मैं कहूंगा कि आपको कोड में लॉगर्स बनाने के बारे में चिंता करने की ज़रूरत नहीं है। यह उन्हें बनाने के समर्थित तरीकों में से एक है। एप्लिकेशन चलने के दौरान आप चीजों को बदलने की क्षमता खो देते हैं (जब तक कि आप इसके लिए कोड नहीं लिखते)। यह कॉन्फ़िगरेशन फ़ाइलों का उपयोग करने के लाभों में से एक है।

+0

मुझे चिंता थी क्योंकि LoggerImpl "आंतरिक" है, इसलिए स्पष्ट रूप से तत्काल नहीं माना जाना चाहिए। फिर मैंने एक ही कार्यान्वयन के साथ एक प्रतिलिपि (डमी लॉगर) बनाई और मैं इसे ILogImpl बनाने के लिए उपयोग करता हूं, लेकिन मुझे नहीं पता था कि log4net से बचने से आप किसी भी विशिष्ट कारण के लिए अपने आप को उदाहरण बना सकते हैं: पी – vtortola

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

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