2008-10-20 10 views
10

मैं वेब अनुरोध, फीचर सक्रियण और सभी टाइमर सामान के लिए SharePoint को log4net को एकीकृत करने के लिए सर्वोत्तम प्रथाओं की तलाश में हूं।शेयरपॉइंट और लॉग 4Net

मेरे पास मेरे खेत में कई सबप्रोजेक्ट हैं, और मुझे केवल एक लॉग 4Net.config फ़ाइल चाहिए।

[संपादित करें]
इतना ही नहीं मैं (मैं एक log4net.config फ़ाइल Global.asax उपयोग करें, और, तो मैं फिर से लोड करने withtout लॉग सेटिंग बदल सकते हैं वेब अनुप्रयोग है, जो करने के लिए आसान है के लिए log4net विन्यस्त करने की जरूरत वेबएप्लिकेशन), लेकिन मैं यह भी अतुल्यकालिक घटनाओं लॉग इन करने की जरूरत है:

  • इवेंट हैंडलर (ItemAdded की तरह)
  • टाइमर नौकरियां
  • ...
+0

क्या आपने शेयरपॉइंट लॉग पर लॉग इन करने का विचार किया है? – Nat

+0

हां। लेकिन मैं प्रत्येक प्रोजेक्ट के लिए differents लॉग फाइलें प्राप्त करने में सक्षम होना चाहता हूं, या यूएलएस लॉग तक पहुंचने के बिना उन लॉग को देखने के लिए एक साधारण वेबपैप के साथ लॉग के लिए केंद्रीय डेटाबेस रखना चाहता हूं। – Nico

उत्तर

0

आप किसी पैकेज को बनाने के लिए 12 पैकेज (समाधान STSDev) पर समाधान पैकेज के हिस्से के रूप में कॉन्फ़िगरेशन फ़ाइल को रिलीज़ कर सकते हैं)। यह आपको कॉन्फ़िगरेशन के लिए एक सेट स्थान देगा और इसमें किसी भी बदलाव को नियंत्रित तरीके से जारी किया जा सकता है (यानी मैन्युअल एडिटम की आवश्यकता नहीं है, बस रोल करें और समाधान को दोबारा इंस्टॉल करें)।

1

सबसे पहले, आपको web.config को संशोधित करने की आवश्यकता होगी जहां आपकी SharePoint वर्चुअल निर्देशिका मौजूद है। ऐसा इसलिए है क्योंकि आपको log4net असेंबली पर भरोसा करने के लिए SafeControl प्रविष्टियों को जोड़ना होगा। आप एक फीचर रिसीवर में SPWebConfigModification क्लास का उपयोग कर प्रोग्राम.मैं प्रोग्राम को स्वचालित रूप से अपडेट कर सकते हैं। जैसा कि आपको web.config को किसी भी तरह संशोधित करना है, आप अंदर अपनी log4net कॉन्फ़िगरेशन को शामिल करने पर विचार करना चाहेंगे और बाहरी log4net कॉन्फ़िगरेशन सेट अप नहीं कर सकते हैं।

<configuration ...> 
    ... 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 
    </configSections> 
    <log4net configSource="log4Net.config"> 
    ... 
</configuration> 

log4net.config फ़ाइल तो साथ रहने में सक्षम होना चाहिए:

हालांकि, अगर आप अभी भी यह करने के लिए करना चाहते हैं, यदि आप web.config फ़ाइल में निम्न जोड़ने के काम कर सकते हैं आपका web.config। जैसा कि नेट कहते हैं, आप इस फ़ाइल को एक समाधान पैकेज के रूप में तैनात कर सकते हैं।

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

+0

धन्यवाद, लेकिन यह केवल मुझे SharePoint के "वेब" भाग के लिए मदद करता है। हालांकि, मुझे घटनाक्रम हैंडलर, फीचर, जॉब्स इत्यादि जैसे असीमित रूप से होने वाली सभी चीजों को लॉग इन करने की भी आवश्यकता है ... – Nico

9

मैंने हाल ही में इसे लागू किया और मेरे लिए काम करने वाले समाधान के साथ आया।

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

[assembly: log4net.Config.XmlConfigurator(ConfigFile = 
    @"C:\Program Files\Common Files\Microsoft Shared\" + 
    @"Web Server Extensions\12\CONFIG\log4net.config", Watch = true)] 

यहाँ देख http://www.codeproject.com/KB/sharepoint/SharepointLog4Net.aspx

+1

डाउनवॉटेड बी/सी आपका लिंक वास्तव में codeproject.com पर नहीं जाता है – Chloraphil

+0

@ क्लोरफिल ऑप्स लिंक तय किया गया है – TheCodeKing

+3

बस एक नाबालिग enchancment: मैं SharePoint पथ प्राप्त करने के लिए SPUtility.GetGenericSetupPath (@ "CONFIG \ log4net.config") का उपयोग करने की अनुशंसा करता हूं। इस मामले में इससे कोई फर्क नहीं पड़ता कि शेयरपॉइंट सी ड्राइव पर है या नहीं। –

0

मैं एक log4net सुविधा विकसित की है और एक WSP फ़ाइल में पैक किया। फीचर रिसीवर वेब.कॉन्फिग में एक httpmodule जोड़ता है और HTTP मॉड्यूल http मॉड्यूल में एप्लिकेशन प्रारंभ ईवेंट उठाए जाने पर लेआउट से log4net.config लोड करता है।