2009-01-21 11 views
13

प्रश्न जहां अपवाद लॉग जाना चाहिए, पर चर्चा एक बार या दो बार (या अधिक) पर चर्चा की गई है, और सिफारिश में से एक यह था कि एप्लिकेशन को इंस्टॉलेशन फ़ोल्डर में कभी नहीं लिखना चाहिए।
हालांकि, अगर मैं कहीं भी% appdata% में लॉग डालता हूं, तो इसका मतलब है कि प्रत्येक उपयोगकर्ता के पास लॉग का अपना सेट होता है। मैं एक ही स्थान पर सभी लॉग रखना पसंद करूंगा।
अंतिम एमएसडीएन मैग मुद्दों में से एक में, स्थापना फ़ोल्डर में लॉग के लिए एक अलग उप फ़ोल्डर (उदा।% प्रोग्रामफाइल \ myapp \ logs) को नियम से वैध अपवाद कहा जाता था। बेशक, इस फ़ोल्डर के लिए एसीएल तदनुसार स्थापित किया जाना चाहिए।
क्या इंस्टॉलेशन फ़ोल्डर सामान्य अभ्यास या एक पूर्ण नो-गो में लॉग फ़ोल्डर है? आप अपना अपवाद लॉग कहां डालते हैं?अपवाद लॉग फ़ाइलों के लिए सर्वश्रेष्ठ स्थान (विंडोज)

संपादित करें:
वास्तव में, हम log4net प्रयोग कर रहे हैं, तो स्थान और प्रवेश के प्रकार पूरी तरह से विन्यास है। हालांकि, मैं एक उचित डिफ़ॉल्ट होना चाहता हूँ। मुझे इवेंट लॉग पर फ़ाइल रखना पसंद है। अधिकांश उपयोगकर्ताओं के लिए, इवेंट लॉग की तुलना में फ़ाइल को संभालना बहुत आसान होता है।
हालांकि, मान लीजिए कि मैं फाइलें रखना चाहता हूं। क्या इंस्टॉलेशन फ़ोल्डर में लॉग फ़ोल्डर होना ठीक है?

उत्तर

6

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

9

विंडोज़ के लिए, ईवेंट लॉग का उपयोग करें। अपना खुद का लॉग बनाना बहुत आसान है या आप अपने संदेशों को मानक में से किसी एक में जोड़ सकते हैं।

यह लाभ है कि ग्रह पर लगभग हर तकनीक (और प्रोग्रामर) घटना लॉग में कुछ दिखने की उम्मीद करता है जब चीजें सही नहीं होती हैं।

+0

वास्तव में? कुछ घटनाओं को क्रैश होने पर 'eventvwr' को देखकर मेरा पहला अंतर्ज्ञान कभी नहीं रहा है: पी मैंने अभी अपने '% AllUserProfile%' की तुलना की है और इसे हर किसी का उपयोग करके देखा है। ओटीओएच मुझे 'eventvwr' में एमएस बनाए गए लोगों को छोड़कर कोई भी लॉग नहीं मिल रहा है। इसके अलावा, विंडोज इवेंट की बजाय फाइल के रूप में लॉग लिखना लॉगिंग भाग को क्रॉस-प्लेटफॉर्म और पोर्टेबल के लिए आसान बनाता है। – kizzx2

+0

@ kizzx2: एप्लिकेशन के आधार पर हम या तो मानक "एप्लिकेशन" लॉग पर लॉग इन करते हैं या ऐप अपना स्वयं का बनाते हैं। मैंने अभी देखा और इसका उपयोग करके लगभग 200 विभिन्न ऐप्स/सेवाओं का संदर्भ पाया। मेरे% AllUserProfile% निर्देशिका का उपयोग कुछ अनुप्रयोगों द्वारा उनके कॉन्फ़िगरेशन डेटा को संग्रहीत करने के लिए किया जाता है। – NotMe

+1

ओह, और मैं उल्लेख करना भूल गया: केंद्रीकृत प्रबंधन सिस्टम दूरस्थ घटना लॉग पूछताछ और निगरानी कर सकते हैं। बड़े वातावरण के लिए कौन सा बड़ा प्लस है। – NotMe

1

यह मुख्य रूप से एप्लिकेशन पर निर्भर करता है, इसलिए मुझे लगता है कि बहुत सारे संभावित उत्तर हैं।

वेबसाइटों के लिए, मेरे पास सर्वर पर "सी: \ लॉग" होगा, फिर व्यक्तिगत वेबसाइटों के लिए "सी: \ लॉग \ वेबसाइट" और लॉग 4नेट या इसी तरह का उपयोग करें।

वेब सेवाओं, विंडो सेवाओं, अनुसूचित नौकरियों आदि के लिए, मैं विंडोज इवेंट लॉग में लिखूंगा। मेरा कंप्यूटर -> प्रबंधित करें -> सिस्टम टूल्स -> (मेरा सेविस)

किसी ऐसे वातावरण में जो विंडोज़ एप्लिकेशन पर तैनात किया गया है, उसके लिए मैं नियंत्रित करता हूं (यानी आंतरिक कंपनी एप्लिकेशन) मैं इसे ईमेल करता हूं "आईटी टीम "अपवाद रिपोर्ट।

अज्ञात उपयोगकर्ताओं को विचलित करने वाले विंडोज़ एप्लिकेशन के लिए। कुछ मत करो।

2

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

1

आप लॉग फ़ोल्डर में लिखने के लिए अनुमतियों के लिए देखना चाहते हैं।

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

1

मुझे लगता है कि आपको ऐपडाटा फ़ोल्डर को प्राथमिकता देना चाहिए, लेकिन यदि आप सभी लॉग को एक फ़ोल्डर में जोड़ना चाहते हैं तो सभी उपयोगकर्ता निर्देशिका (Environment.SpecialFolder.CommonAplicationData) का उपयोग करें और प्रत्येक उपयोगकर्ता के लिए अपने ऐप फ़ोल्डर के अंदर उप फ़ोल्डर्स बनाएं। इस तरह आप न केवल अनुमति मुद्दों से छुटकारा पा सकते हैं बल्कि अपनी जगह को छेड़छाड़ से बचने के लिए भी :) IMHO।

7

विशेष एसीएल के बिना एक आम फाइल करने के लिए लॉग इन करने के लिए, के तहत की तरह

C:\ProgramData\MyCompany 

तरह

string saveFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + @"\MyCompany"; 

कुछ

C:\Documents and Settings\All Users\Application Data\MyCompany 
XP पर

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

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