2010-12-16 8 views
5

मैं रंगीन कंसोल ऐपेंडर का उपयोग कर रहा हूं, मुझे चिंता है कि यह कभी भी मेरे आवेदन को लटकाएगा या नहीं। किसी log4net साइट से अनुभवक्या लॉग 4नेट कभी एप्लिकेशन को लटका देगा?

+0

न केवल रंगीन कंसोलएपेंडर। यहां तक ​​कि ConsoleAppender भी उसी तरह लटका है। –

उत्तर

3

है: http://logging.apache.org/log4net/release/faq.html

सं log4net विश्वसनीय नहीं है। यह एक सर्वोत्तम प्रयास और असफल-बंद लॉगिंग सिस्टम है।

असफल होने के कारण, हमारा मतलब है कि लॉग 4नेट संभावित रूप से आपके एप्लिकेशन को क्रैश होने के कारण रन-टाइम पर अप्रत्याशित अपवाद नहीं फेंक देगा। यदि किसी भी कारण से, log4net एक अपरिचित अपवाद फेंकता है (ArgumentException और ArgumentNullException को छोड़कर जिसे फेंक दिया जा सकता है), कृपया [email protected] मेलिंग सूची में एक ईमेल भेजें। अपरिचित अपवादों को तत्काल ध्यान देने की गंभीर बग के रूप में संभाला जाता है।

मैं व्यक्तिगत रूप से इसे हर समय उपयोग करता हूं और कभी भी कोई समस्या नहीं होती है।

+0

मुझे चिंता है कि कम से कम रंगीन कंसोल एपेंडर एप्लिकेशन को लटकाएगा। मैं वास्तव में एक – user496949

+0

@ user496949 से मिलता हूं: मुझे एक ही समस्या का सामना करना पड़ा। मैं एक अजीब प्रक्रिया का उपयोग कर रहा था और ColoredConsoleAppender के साथ जोड़ रहा था। –

+0

मैं वास्तव में समस्या हल हो जाती: बुला प्रक्रिया उत्पादन धारा से पढ़ा नहीं था और अंत में धारा "पूर्ण" था। –

2

@ ralf.w। पहले से ही पूरे लक्षण दिखाता है। मैं हाल ही में एक ही मुद्दे को पूरा करने के रूप में refrase कर सकते हैं।

  1. लॉग प्रिंट करने के लिए ColoredConsoleAppender (या ConsoleAppender) का उपयोग करने वाले एक कंसोल एप्लिकेशन को विकसित करें।
  2. उस कंसोल को निष्पादित करने के लिए एक अन्य एप्लिकेशन (मेरे मामले में WinForms) विकसित करें (Process.Start का उपयोग करके)। मानक आउटपुट और त्रुटि को पुनर्निर्देशित करने के लिए UseShellExecute = false। CreateNoWindow = सत्य। विंडो स्टाइल = छुपा हुआ।

फिर कुछ मशीनों (या दूरस्थ डेस्कटॉप सत्र) पर, log4net सांत्वना आवेदन रखती हूँ, और में लटका उदासीनता आप स्ट्रीम में एक लिखने को समाप्त करने के लिए यह अजीब तरह से प्रतीक्षा करता है देख सकते हैं।

सामान्य मशीन (जैसे मेरा) पर पुन: पेश करना मुश्किल है, फिर भी जांच करने के लिए कठिन है कि log4net खुला स्रोत है।

समाधान के रूप में (छुपा के बजाय) को कम से कम के रूप में सांत्वना आवेदन दिखाने के लिए, और/या अन्य ProcessStartInfo सेटिंग में बदलाव के रूप में सरल हो सकता है।

+1

हम कुछ इसी तरह देख रहे थे। हमने पाया है कि log4net (और/या विंडोज) 4KB आउटपुट तक stdout/stderr तक बफर कर रहा है। उसके बाद बफर भरता है, आगे लॉग कॉल रखती हूँ। तो अगर प्रक्रिया एक कंसोल के लिए प्रक्रिया बी, और प्रक्रिया बी लॉग शुरूआत, और प्रक्रिया एक प्रक्रिया यह (प्रक्रिया बी) का शुभारंभ से stdout नहीं पढ़ता, प्रक्रिया बी के बाद बफर भरता रखती हूँ। पुनर्निर्देशन की बारी समस्या को हल करती है। होने की प्रक्रिया एक stdout पढ़ भी समस्या को ठीक होगा। – Jimothy

+0

@ जिमोथी आपने मुझे मेरे लिए समस्या हल की है;) Thx। – nozzleman

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