2008-12-19 17 views
11

मैं अपने .NET 3.5 सांत्वना आवेदन में log4net उपयोग कर रहा हूँ और लॉग संदेशों मैं मानक दोनों कंसोल बाहर और RollingFileAppender में देखा जाना चाहिए उत्पन्न करना चाहते हैं। फ़ाइल आउटपुट एक आकर्षण की तरह काम कर रहा है, लेकिन जब मैं निष्पादित करता हूं तो मुझे कंसोल मानक में बहने वाले स्टेटस संदेशों की स्ट्रीम दिखाई दे रही है। मैं सभी स्टेटस जानकारी छोड़ना चाहता हूं और केवल वही संदेश देख सकता हूं जो मैं लॉग फ़ाइल में प्रोग्रामेटिक रूप से उत्पन्न कर रहा हूं।मैं कंसोल पर log4net स्थिति संदेशों को कैसे अक्षम करूं?

यहाँ मैं अपने अनुप्रयोग चलाने के बाद मैं क्या देखते हैं का एक उदाहरण है:

log4net: XmlHierarchyConfigurator: Configuration update mode [Merge]. 
log4net: XmlHierarchyConfigurator: Logger [root] Level string is [DEBUG]. 
log4net: XmlHierarchyConfigurator: Logger [root] level set to [name="DEBUG",value=30000]. 
log4net: XmlHierarchyConfigurator: Loading Appender [Console] type: [log4net.Appender.ConsoleAppender] 
log4net: PatternParser: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] 

और यह जब तक यह लकड़हारा वस्तु की पूरी इन्स्टेन्शियशन का वर्णन करता जा रहा पर रहता है।

मैं कैसे इसे बंद कर देते हैं? क्या मैं? मैंने कॉन्फ़िगरेशन फ़ाइल सेटिंग्स के सभी प्रकार की कोशिश की है, लेकिन कुछ भी इन्हें दूर नहीं करता है! गरर ...

उत्तर

3

(दोनों appenders के साथ तो कोई appender के साथ पहली संदर्भ log4net, तो कंसोल appender के साथ,) समय में एक नई परियोजना एक कदम का उपयोग कर समस्या को दोहराने का प्रयास करें। यदि यह वही व्यवहार दिखाता है, तो कृपया log4net की पूरी कॉन्फ़िगरेशन पोस्ट करें।

इसके अलावा, आप log4net Config Examples page से विन्यास नमूने का उपयोग की कोशिश कर सकते।

संपादित करें: यह उन संदेशों का कारण हो सकता है: How do I enable log4net internal debugging

0

खैर, यह कहा गया है कि जड़ लकड़हारा स्तर डिबग करने के लिए निर्धारित है। आपके विन्यास फाइल या कोड है जहाँ से प्रवेश शुरू किया जाता है के लिए उपयोग के बिना, मुझे लगता है कि है कि आप परोक्ष जड़ लकड़हारा के लिए डिफ़ॉल्ट मान है, जो

  1. कमांड लाइन (stdout) पर ले जाते हैं का उपयोग कर रहे हैं, और
  2. डिफ़ॉल्ट रूप से डीबग
0

log4net faq पर देखने के लिए कृपया है। वे वास्तव में उन सभी सामान्य नुकसानों का सामना कर सकते हैं जिन्हें आप सामना कर सकते हैं।

1

उपलब्ध कराने जा सका अपने log4net config अनुभाग की तरह दिखता है, या कम से कम आप इसे कैसे कॉन्फ़िगर किया है क्या? मेरा सबसे अच्छा अनुमान यह है कि this answer सही है कि आपके पास log4net आंतरिक डीबगिंग कॉन्फ़िगर किया गया है। या तो आपके पास आपके प्रोजेक्ट में log4net का स्रोत है और आप इसे अपने कोड से संकलित कर रहे हैं। इससे यह आपके कॉन्फ़िगरेशन को चुनने और इसे उसी तरह से चलाने का कारण बनता है।

15

मैं बस इसी समस्या से गुज़र गया (जो, आश्चर्यजनक रूप से, मुझे यह सवाल कैसे मिला)।

वैसे भी, मेरी समस्या, और संभवतः आपका भी, "< log4net debug = true >" की वेब/एप कॉन्फ़िगरेशन फ़ाइल सेटिंग के कारण हुआ था। बहुत स्पष्ट, है ना? मैंने एक वेब स्निपेट से मेरी app.config सेटिंग्स के कंकाल को चिपकाया था, और एपेंडर्स पर ध्यान केंद्रित किया था, वास्तव में रूट लॉग 4नेट तत्व को दूसरी नज़र नहीं दे रहा था। लेकिन अब यह आपके लिए है। यह एफएक्यू में है, लेकिन फिर से अन्य चीजें मेरी आंखें पकड़ीं और यह विशेषता नहीं।

15

सेट डिबग = false

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 

    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 

    <log4net debug="false"> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="your file name" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="10MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" /> 
     </layout> 
    </appender> 

    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="RollingLogFileAppender" /> 
    </root> 
    </log4net> 
</configuration> 
0

मैं ओ पी के रूप में एक ही समस्या आ रही है। Log4net.config में मैंने डीबग = झूठा सेट किया है। मेरे पास एक PatternLayout परिभाषित एक फ़ाइल एपेंडर सेट भी है। जब मैं लॉग इन करता हूं।चेतावनी ("परीक्षण") मुझे अपेक्षित स्वरूपित परिणाम अपेक्षित txt फ़ाइल में लिखे गए हैं। हालांकि, मुझे कंसोल (stdout) में लिखी गई एक और वर्बोज स्ट्रिंग भी मिलती है।

संपादित करें: मेरे लिए ठीक मेरी कोड BasicConfigurator.Configure() में इस लाइन को समाप्त करने के था; ध्यान दें कि कंसोल और घोषित फ़ाइल एपेंडर दोनों को लिखने के लिए log4net को स्पष्ट रूप से कुछ भी नहीं बताया गया था, मेरी कॉन्फ़िगरेशन में। वास्तव में, log4net डीबग = झूठी घोषित की गई थी और समस्या जारी रहेगी। Log4net मुखपृष्ठ पर उदाहरण कोड लापरवाही से BasicConfigurator को आमंत्रित करता है। कॉन्फ़िगर(); हालांकि मैं log4net का उपयोग करता हूं, लाइब्रेरी कई महत्वाकांक्षी ओपन सोर्स प्रोजेक्ट की समस्याओं से ग्रस्त है। डेवलपर्स को ऐसे कार्य के लिए हजारों विकल्पों को देने के लिए लंबे एक्सएमएल संचालित कॉन्फ़िगरेशन मौजूद हैं जिनके पास वास्तव में अधिक सुव्यवस्थित इंटरफ़ेस उपलब्ध होना चाहिए। प्रोग्रामर एक दूसरे के समय का मूल्य नहीं मानते हैं। हम अपने उपयोगकर्ता इंटरफेस में "मुझे मत सोचो" नियम लागू करते हैं लेकिन हमारे मशीन इंटरफेस में नहीं। ऐसा लगता है कि हम एक मूल सिद्धांत को नाराज करते हैं जो कि अच्छे डिजाइन के लिए सार्वभौमिक है। जटिलताओं को डेवलपर के लिए उपलब्ध होना चाहिए, लेकिन कोर कार्यक्षमता को पूरा करने के लिए कुछ घंटों को खोना नहीं चाहिए। इसे ध्यान में रखते हुए मैं कहूंगा कि लॉग 4नेट खराब डिजाइन किया गया है। अधिकांश सॉफ्टवेयर के साथ जटिलता के लिए बहुत जटिलता है। यदि प्रोजेक्ट का मार्गदर्शन करने वाले डेवलपर्स लाइब्रेरी का सबसे आम उपयोग केस अधिक प्रतिभाशाली थे (तब ऐप फ़ोल्डर में टेक्स्ट फ़ाइल में लॉग इन करने के लिए इसका उपयोग करने के संदर्भ में) किसी भी पिछले ज्ञान के बिना 5-10 मिनट के एक्सपोज़ के साथ लागू किया जा सकता है। यह मामला नहीं है क्योंकि कॉन्फ़िगरेशन के लिए इंटरफ़ेस डिज़ाइन और पद्धति। यह कारण है कि मैं अधिकांश सॉफ़्टवेयर इंजीनियरों के विचार से नफरत करता हूं। वे सबसे आम उपयोग मामलों के लिए सादगी के घातीय मूल्य को देखने में असमर्थ हैं और इसके बजाय वे अधिक परेशान मानते हैं कि वे इंटरफ़ेस को अन्य डेवलपर्स में जितना अधिक मूल्य जोड़ेंगे उतना अधिक मूल्यवान बनाते हैं। वे अहंकार और अज्ञानता से प्रेरित होते हैं। कोई आश्चर्य नहीं कि अधिकांश सामाजिक बहिष्कार हैं।

2

आप अपने कोड में यह है: यह करने के लिए

log4net.Config.BasicConfigurator.Configure(); 

बदलें:

<appSettings> 
    <add key="log4net.Internal.Debug" value="true"/> 

बदलने कि:

log4net.Config.XmlConfigurator.Configure(); 
0

एप्लिकेशन मैं विरासत में मिला है, वहाँ लाइन था false पर समस्या को हल किया गया।

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