2010-11-23 15 views
18

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

<appender name="Rolling Log" type="log4net.Appender.RollingFileAppender"> 
<file value="..\logs\MyProgram.%cs{instanceName}.log" /> 
<appendToFile value="true" /> 
<rollingStyle value="Composite" /> 
<datePattern value=".yyyy-MM-dd.lo\g" /> 
<maxSizeRollBackups value="10" /> 
<maximumFileSize value="150MB" /> 
<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%-5level] %property{remoteUser} [%threadIdentity] %type{1}.%method - %message%newline%exception" /> 
</layout> 

मैं केवल लॉग के 30 दिनों के रखना चाहते हैं। लॉग स्वचालित रूप से लॉग हटाने के लिए मैं log4net को कैसे कॉन्फ़िगर कर सकता हूं? अगर लॉग 4नेट के माध्यम से उपलब्ध नहीं है, तो मेरे पास कौन से समाधान होंगे?

अग्रिम धन्यवाद।

उत्तर

-1

This कुछ मदद प्रदान करना चाहिए। RollingFileAppender अनुभाग

+3

वह पहले से ही रोलिंगफाइलएपेंडर का उपयोग कर रहा है, और यदि आप ऐसा कर सकते हैं तो इस दस्तावेज़ में कोई जानकारी नहीं है। – steinar

+1

ऐसा करने के लिए कुछ भी नहीं है। –

8

यहाँ के लिए देखो कि अनिवार्य रूप से एक ही बात पूछता है अतः यहाँ से एक और सवाल यह है: Log4Net: set Max backup files on RollingFileAppender with rolling Date

आम सहमति है कि log4net यह सीधे समर्थन नहीं करता था। एक पोस्टर का कहना है कि इसे log4net के स्रोत कोड भंडार में कार्यान्वित किया गया है, लेकिन अभी तक जारी नहीं किया गया है। एक और पोस्टर कुछ कोड दिखाता है जिसे वह समय-समय पर पुरानी फाइलों को साफ करने के लिए उपयोग करता है।

+0

यह विकल्प मेरे लिए आकर्षक लग रहा है क्योंकि यह RollingFileAppender को ओवरराइड करने से आसान लगता है। अब मैं लॉग रखरखाव नौकरी जोड़ने की योजना बना रहा हूं, जो क्वार्ट्ज.Net जैसे शेड्यूलर द्वारा ट्रिगर किया गया है। – tonyjy

+1

मैंने सोचा था कि @jeff उसके जवाब में एक सुंदर अच्छा समाधान था: http://stackoverflow.com/questions/95286/log4net-set-max-backup-files-on-rollingfileappender-with-rolling-date/2916628#2916628 । यह देखने के लिए कि क्या यह फ़ाइल (या फाइलें) को हटाने का समय था या नहीं, ऐप स्टार्टअप पर अनिवार्य रूप से जांचना। यदि आपका आवेदन बहुत लंबा नहीं चल रहा है (यानी एक समय में 30 दिनों से अधिक नहीं), तो उसका दृष्टिकोण पर्याप्त हो सकता है। – wageoghe

4

मैं पूरी तरह से सुनिश्चित है कि आप मौजूदा appender के साथ ऐसा नहीं कर सकते कर रहा हूँ, हालांकि मैं यह पुष्टि नहीं कर सकते।

हालांकि, मैं दो विकल्प देखेंगे:

  1. अपनी खुद की appender बनाएँ, RollingFileAppender उपवर्गीकरण (या, आप और अधिक नियंत्रण चाहते हैं तो उपवर्ग FileAppender)। फिर उस एपेंडर का उपयोग करने के लिए अपनी कॉन्फ़िगरेशन फ़ाइल बदलें (एपेंडर तत्व बदलें)।
  2. एक .bat फ़ाइल बनाएं जो x दिनों से पुरानी फ़ाइलों को हटा देता है (देखें: Batch file to delete files older than N days)। फिर विंडोज़ (http://support.microsoft.com/kb/308569) में एक कार्य बनाएं जो इस बल्ले फ़ाइल को चलाता है उदा। हर दिन।
+1

मुझे पहले दृष्टिकोण को बेहतर पसंद है। दूसरे दृष्टिकोण को मेरी वर्तमान प्रक्रिया की तुलना में तैनाती पर अधिक आवश्यकता होती है और ट्रैक करना आसान नहीं है। – tonyjy

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