मेरा जवाब आधारित है logback
, न कि log4j
(भ्रम के लिए खेद है ..)
आप उपयोग करके उस लॉग रोटेशन को प्राप्त कर सकते हैं TimeBasedRollingPolicy
।
उदाहरण के लिए)
<appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/system.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./logs/system.log.%d{yyyy-MM-dd}</fileNamePattern>
<!-- keep last 30 days of logs -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %msg %n</Pattern>
</encoder>
</appender>
यह आधी रात को घूमेगा, और 30 दिनों से अधिक पुरानी लॉग फ़ाइलों को हटा देगा।
fileNamePattern: रोलओवर अवधि fileNamePattern के मान से अनुमानित है
maxHistory: वैकल्पिक maxHistory संपत्ति रखने के लिए संग्रहित फ़ाइलों की अधिकतम संख्या को नियंत्रित करता है, अतुल्यकालिक रूप से पुरानी फ़ाइलों को हटा रहा है। उदाहरण के लिए, यदि आप मासिक रोलओवर निर्दिष्ट करते हैं, और मैक्सहिस्ट्री को 6 पर सेट करते हैं, तो 6 महीने के अभिलेखागार की फाइलें 6 महीने से अधिक पुरानी फाइलों के साथ रखी जाएंगी। पुराने संग्रहीत लॉग फ़ाइलों के रूप में नोट निकाले जाते हैं, लॉग फ़ाइल संग्रह के उद्देश्य के लिए बनाए गए किसी भी फ़ोल्डर को उपयुक्त के रूप में हटा दिया जाएगा।
आप TimeBasedRollingPolicy पर अधिक जानकारी देख सकते हैं