2015-10-20 13 views
5

के साथ पुराने लॉग (FYI करें मैं पहले से ही। मैं तूफान 0.10.0-beta1 उपयोग कर रहा हूँ। Log4j2 का विन्यास फ़ाइल तूफान में worker.xml है इंटरनेट में कई दस्तावेज बाहर की खोज)कैसे log4j2

अब नष्ट करने के लिए, मैं log4j2 का उपयोग करने की कोशिश करता हूं।

मैं पुराने लॉग हटाने का तरीका खोज रहा हूं लेकिन मुझे पता नहीं चल रहा है। कॉन्फ़िगरेशन का हिस्सा नीचे जैसा है।

<RollingFile name="SERVICE_APPENDER" 
      fileName="${sys:storm.home}/logs/${sys:logfile.name}.service" 
      filePattern="${sys:storm.home}/logs/${sys:logfile.name}.service.%d{yyyyMMdd}"> 
     <PatternLayout> 
      <pattern>${pattern}</pattern> 
     </PatternLayout> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
     </Policies> 
     <DefaultRolloverStrategy max="9"/> 
    </RollingFile> 

सबसे पहले, मैं जो अधिक उम्र के 3 दिन निकाल दिए जाते हैं हैं कि लॉग फाइल की उम्मीद।

लेकिन, वास्तव में, यह नहीं है।

तो, मुझे आश्चर्य है कि पुराने लॉग को हटाने का कोई तरीका है या नहीं।

यदि कोई ऐसा तरीका है जिसे मैंने अभी तक नहीं पकड़ा है, तो कृपया मुझे सूचित करें।

+0

क्या आपने कभी कोशिश की है कि क्या हो रहा है? जहां तक ​​मुझे याद है कि log4j पहले से ही पुरानी फाइलों को हटा चुका है, तो मुझे लगता है कि log4j2 भी होगा। बस अपनी रोलओवरस्ट्रेटी को 2 पर सेट करें और इसे आजमाने के लिए अपनी सिस्टम तिथि बदलें ... – Marged

+0

@Marged आपकी टिप्पणियों के लिए धन्यवाद। भले ही वर्तमान प्रोजेक्ट दिखाता है कि मैं काम नहीं करता हूं, फिर भी मैं कोशिश करूंगा। – obanadingyo

उत्तर

1

आप log4j के लिए इस JIRA प्रविष्टि में और पृष्ठभूमि जानकारी पा सकते हैं:

https://issues.apache.org/jira/browse/LOG4J2-524

यह मामला है कि ऑटो काम नहीं करता है जब आप केवल एक TimeBasedTriggeringPolicy

+0

लिंक साझा करने के लिए धन्यवाद। अंत में, मुझे पता चला कि अब तक समय-आधारित पुराने लॉग को हटाने का कोई तरीका नहीं है। इस लिंक पर अंतिम टिप्पणी के अनुसार (https://issues.apache.org/jira/browse/LOG4J2-435), पुराने समय-आधारित लॉग को हटाने की नौकरियां प्रगति पर हैं।इसलिए, मैंने इंडेक्स,% i, – obanadingyo

4
का उपयोग पुराने लॉग फ़ाइलों को हटाने प्रतीत हो रहा है

2.5 के बाद से, Log4j प्रत्येक रोलओवर पर निष्पादित custom Delete action का समर्थन करता है।

आप नियंत्रित कर सकते हैं जो फ़ाइलों के किसी भी संयोजन से नष्ट हो जाती हैं:

  1. नाम (मिलान एक glob या एक regex)
  2. Age ("हटाते हैं 14 दिन पुराना या पुराने")
  3. गणना ("रखना ही सबसे हाल ही में 3")
  4. आकार ("500MB करने के लिए केवल सबसे हाल ही में फ़ाइलों को बनाए रखने के")

जिन उपयोगकर्ताओं को हटाने के लिए फ़ाइलों को और अधिक सुदृढ़ नियंत्रण की आवश्यकता है, वे किसी भी समर्थित जेएसआर -223 स्क्रिप्टिंग भाषा का उपयोग कर स्क्रिप्ट स्थिति निर्दिष्ट कर सकते हैं।

कृपया documentation देखें, इसमें तीन पूर्ण उदाहरण हैं जो उपयोगी हो सकते हैं।

अपने प्रश्न के लिए, यह टुकड़ा काम करना चाहिए:

<DefaultRolloverStrategy> 
    <!-- 
     * only files in the log folder, no sub folders 
     * only rolled over log files (name match) 
     * only files that are 4 days old or older 
    --> 
    <Delete basePath="${sys:storm.home}/logs/" maxDepth="1"> 
     <IfFileName glob="*.service.????????" /> 
     <IfLastModified age="4d" /> 
    </Delete> 
    </DefaultRolloverStrategy> 

अंत में, सावधान रहना! इस तरह से हटाई गई फ़ाइलों को पुनर्प्राप्त करने का कोई तरीका नहीं है। :-)

+0

का उपयोग कर आकार-आधारित रोलओवर रणनीति का उपयोग करने का निर्णय लिया है क्या Log4j2 2.3 संस्करण के माध्यम से इसे प्राप्त करने का कोई विकल्प है? – pna

+1

नहीं, मुझे डर नहीं है। हटाएं कार्रवाई 2.5 में जोड़ा गया था ... आप बैकपोर्ट फिक्स का प्रस्ताव दे सकते हैं (आदर्श रूप से यूनिट परीक्षणों के साथ पैच प्रदान करते हैं) लेकिन यह एक सीधा बंदरगाह नहीं होगा क्योंकि हटाए गए कार्यान्वयन जावा 7 पथ एपीआई का भारी उपयोग करता है ... –

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