2011-11-03 16 views
6

मैं लॉग फ़ाइल बनाना चाहता हूं जिसे अगले दिन की शुरुआत में लुढ़काया जा सकता है या यदि यह निर्दिष्ट फ़ाइल आकार तक पहुंच गया है और लॉग फ़ाइल दिनांक फ़ोल्डर के अंदर निहित होना चाहिए। फ़ोल्डर का प्रारूप YYYYMMDD (/20111103/mylogfile.log)log4j द्वारा दैनिक रोलिंग और अधिकतम फ़ाइल आकार के साथ लॉग फ़ाइल को कैसे नियंत्रित करें?

क्या कस्टम क्लास को लागू किए बिना लॉग 4j द्वारा ऐसा करना संभव है?

अब मैं log4j और log4j-अतिरिक्त, उपयोग कर रहा हूँ मैं के रूप में 50 MB करने के लिए मेरी फाइल हर रोज और सेट अधिकतम फ़ाइल आकार रोलिंग के लिए log4j एपीआई में परिभाषित FileNamePattern विशेषता निर्धारित किया है।

मेरे log4j.xml है:

<appender name="MYAPPENDER" class="org.apache.log4j.rolling.RollingFileAppender"> 
    <param name="encoding" value="UTF-8" /> 
    <param name="append" value="true" /> 
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
     <param name="FileNamePattern" value="${catalina.home}/logs/MY-APP/%d{yyyyMMdd}/MY-APP_%d{yyyyMMddHHmmss}.log" /> 
    </rollingPolicy> 
    <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy"> 
     <param name="maxFileSize" value="50000000" /> 
    </triggeringPolicy> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="[%d{dd/MM/yyyy HH\:mm\:ss}] %-5p [%c.%M(),%4L] - %m%n" /> 
    </layout> 
</appender> 

ऊपर सेटिंग का परिणाम है कि लॉग फ़ाइल अगले दिन की शुरुआत में लुढ़का नहीं है, लेकिन अगर फ़ाइल के आकार 50 MB करने के लिए पहुंचे तो लॉग फ़ाइल शुरू किया जाएगा।

कृपया मुझे सलाह देने में मदद करें। मीटर (_ _) मी

उत्तर

0

RollingFileAppender documentation

से किसी काम के होने के लिए, एक RollingFileAppender उदाहरण दोनों एक RollingPolicy और एक TriggeringPolicy सेट अप होना चाहिए .... TimeBasedRollingPolicy एक RollingPolicy के रूप में दोनों कार्य करता है और एक TriggeringPolicy।

इसलिए, आपके आकार आधारित TriggeringPolicy को अनदेखा कर दिया गया है क्योंकि TimeBasedRollingPolicy ऊपर कॉन्फ़िगर किया गया है। आपकी आवश्यकता को समायोजित करने का एकमात्र तरीका एक कस्टम वर्ग कार्यान्वयन होगा।

इसके अलावा, यदि लॉग फ़ाइल का आकार वास्तव में मायने रखता है, तो आप SizeBasedTriggeringPolicy को समाप्त करने के लिए automatic gzip compression का उपयोग करने पर विचार कर सकते हैं और केवल आपके लॉग रोल हर दिन रोल कर सकते हैं।

3

दैनिक रोलिंग सक्षम करने के लिए: वर्ग = "org.apache.log4j.DailyRollingFileAppender"

और अधिकतम फ़ाइल आकार और बैकअप फ़ाइलों

<param name="MaxFileSize" value="200MB" /> 
<param name="MaxBackupIndex" value="4" /> 

की संख्या सक्षम करने के लिए लेकिन आप MaxFileSizeDailyRolling के साथ नहीं डाल सकते हैं, इसलिए आप रोलिंग फ़ाइल एपेंडर

का उपयोग कर सकते हैं एक उदाहरण:

<appender name="MAIN_FA" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="logs/main.log" /> 
    <param name="datePattern" value="'-'yyyy-MM-dd'.log'" /> 
    <param name="append" value="false" /> 
    <param name="Threshold" value="ALL" /> 
    <param name="MaxFileSize" value="200MB" /> 
    <param name="MaxBackupIndex" value="4" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %C{6} (%F:%L) - %m%n" /> 
    </layout> 
</appender> 

या आप प्रश्न में एक्सएमएल के साथ मेरे लिए यह http://wiki.apache.org/logging-log4j/DailyRollingFileAppender

6

दैनिक काम करता है क्या कर सकते हैं केवल log4j में बदल दिया।बराबर गुण 100KB के बाद ऊपर रोल करने के लिए (परीक्षण प्रयोजनों के लिए):

# Root logger option 
log4j.rootLogger=INFO, file 

# Direct log messages to a file 
log4j.appender.file=org.apache.log4j.rolling.RollingFileAppender 
log4j.appender.file.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy 
log4j.appender.file.RollingPolicy.FileNamePattern=/path/to/logs/%d{yyyyMMdd}/myLog_%d{yyyyMMddHH}.log 
log4j.appender.file.TriggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy 
log4j.appender.file.TriggeringPolicy.maxFileSize=100000 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 
log4j.appender.file.Append=true 

यह एक टाइमस्टैंप निर्देशिका (प्रतिदिन एक निर्देशिका - वैकल्पिक) पैदा करेगा निम्न स्वरूप के साथ लॉग (परीक्षण प्रयोजनों के लिए प्रति घंटे एक साथ - परिवर्तन FileNamePattern आपकी आवश्यकताओं के अनुरूप):

myCompanyLog_20160203 30.log

myCompanyLog_20160203 30.log