2012-12-18 11 views
8

log4j 1.2.16 के RollingFileAppender का उपयोग करता है, जो लॉग फ़ाइलों को रोल करता है, जब वे एक निश्चित आकार तक पहुंचते हैं। अब जब मैं एक निश्चित आकार तक पहुंचता हूं तो मैं रोज़ और लॉग फ़ाइलों को रोल करना चाहता हूं। इस प्रकार प्रति दिन एक या अधिक लॉग फाइलें होंगी।आकार और समय दोनों के द्वारा रोलिंग लॉग

उदाहरण के लिए,

myapp.log 
myapp-17.12.2013.log 
myapp-16.12.2012.log 
myapp-16.12.2012.1.log 
myapp-16.12.2012.2.log 

वहाँ एक ऑफ-द-शेल्फ appender जो यह पहले से ही करता है?

+0

http://stackoverflow.com/questions/3823977/need-a-working-example -of-configuring-log4j-rollingfileappender-through-Properties – Stefan

उत्तर

8

वास्तव में दो विकल्प हैं विकल्प फ़ाइल नामों का उपयोग करें। अगर इन फ़ाइलों को स्वचालित रूप से आगे बढ़ाना एक और स्क्रिप्ट है तो इस पर ध्यान से विचार करें। फ़ाइल नाम जोखिम भरा होता है जब दो प्रक्रियाएं एक ही फ़ाइल से निपटती हैं।

मेरा सुझाव पैटर्न में अपरिवर्तनीय लॉग फ़ाइल नाम को सीधे लिखना है: myapp- {dd.MM.yyyy}। {X} .log। इस तरह "रोलिंग" बस एक फाइल बंद कर रहा है और एक नया खोल रहा है। कोई नाम नहीं कोई पृष्ठभूमि धागे नहीं।

+0

यह वर्कर्ड। बहुत बहुत धन्यवाद। –

3

त्वरित उत्तर "नहीं" है। Log4j के javadoc को देख रहे हैं: https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/FileAppender.html

केवल दो आउट ऑफ़ द बॉक्स फ़ाइल एपेंडर हैं: DailyRollingFileAppender और RollingFileAppender (और पहले की अनुशंसा नहीं की जाती है क्योंकि इसमें सिंक्रनाइज़ेशन समस्याएं हैं)।

आप जो चाहते हैं उसे प्राप्त करने के लिए, आपको अपना स्वयं का एपेंडर बनाना चाहिए, रोलिंगफाइलएपेंडर को विस्तारित करना और दिन बदलते समय फ़ाइल को रोल करने के लिए इसे संशोधित करना चाहिए। संशोधन विधि में होगा: http://www.docjar.com/html/api/org/apache/log4j/RollingFileAppender.java.html (लाइन 274):

protected void subAppend(LoggingEvent event) 

आप अपने यहाँ स्रोत देख सकते हैं।

आपको कोड की प्रतिलिपि बनाने और पेस्ट करने और अपनी आवश्यकताओं के अनुसार रोल करने के लिए रोल करने की आवश्यकता है। http://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedFNATP

  • यहाँ से Log4J के लिए TimeAndSizeRollingAppender है: http://www.simonsite.org.uk/
  • ध्यान रखें कि दोनों में रखें इसके आकार और समय ट्रिगर नीति के साथ

    1. उपयोग LogBack:

    2

    विन्यास एक्सएमएल नीचे काम करेगा: जार आवश्यक: log4j-रोलिंग-appender-20150607-2059

    <?xml version="1.0" encoding="UTF-8" ?> 
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
    <log4j:configuration debug="true" 
        xmlns:log4j='http://jakarta.apache.org/log4j/'> 
        <appender name="file" 
         class="uk.org.simonsite.log4j.appender.TimeAndSizeRollingAppender"> 
         <param name="File" value="D:\\App.log" /> 
         <param name="Threshold" value="DEBUG" /> 
         <param name="DatePattern" value=".yyyy-MM-dd" /> 
         <param name="MaxFileSize" value="1KB" /> 
         <param name="MaxRollFileCount" value="100" /> 
         <param name="ScavengeInterval" value="30000" /> 
         <param name="BufferedIO" value="false" /> 
         <param name="CompressionAlgorithm" value="GZ" /> 
         <layout class="org.apache.log4j.PatternLayout"> 
          <param name="ConversionPattern" value="%-5p %-23d{ISO8601} [%t] %x: %c{1} - %m%n" /> 
         </layout> 
        </appender> 
    
        <root> 
         <level value="DEBUG" /> 
         <appender-ref ref="file" /> 
        </root> 
    
    </log4j:configuration> 
    
    संबंधित मुद्दे