2013-08-08 4 views
5

क्या मैं प्रत्येक घंटे रोलओवर के लिए log4j कॉन्फ़िगर कर सकता हूं, फिर सभी ज़िप लॉग-फ़ाइलों को एक ज़िप में संपीड़ित कर सकता हूं (ताकि ज़िप में 24 लॉग-फ़ाइलें हों)।log4j। रोलओवर प्रत्येक घंटे, ज़िप

आदर्श रूप से मैं केवल उन दिनों के लिए फ़ाइलों को ज़िप करना चाहता हूं जो एक सप्ताह पुराना और पहले हैं। लेकिन यह सवाल का एक और हिस्सा है।

उत्तर

8

शायद आप DailyRollingFileAppender का उपयोग करना चाहते हैं। उन्हें प्रति घंटा रोल करने के लिए, उदाहरण के लिए, आप '.'yyyy-MM-dd-HH के डेटपटर का उपयोग करेंगे।

log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH 
... 

या अपने कार्यक्रम संबंधी विन्यास के लिए: एक log4j.properties फ़ाइल के लिए

DailyRollingFileAppender appender = new DailyRollingFileAppender(); 
appender.setDatePattern("'.'yyyy-MM-dd-HH"); 

Logger root = Logger.getRootLogger(); 
root.addAppender(appender); 

दुर्भाग्य से, एक DailyRollingFileAppender का उपयोग कर मतलब है कि आप फ़ाइल आकार को सीमित नहीं कर सकते हैं - अगर आपके पास इस समस्याग्रस्त किया जा सकता दी गई लुढ़का अवधि में लॉग के टन।

को एक बार देख ले सेक करने के लिए: compress-log4j-files

अच्छी तरह से
+1

, आप का मतलब है कि TimeBasedRollingPolicy साथ DailyRollingFileAppender संयोजन (value = "लॉग/APPNAME% d ​​{yyyy-MM-dd} ज़िप।"), यह हो जाएगा करना उन सभी 24 फाइलों को प्रतिदिन लेने और एक ज़िप-संग्रह में पैक करने में सक्षम है? – Alec

+0

क्षमा करें idk, आपको इसे आजमा देना है – Khinsu