2011-01-07 12 views
6

में दिनांक के साथ फ़ाइल नाम मैं वर्तमान दिनांक को log4j लॉग फ़ाइल में जोड़ने की कोशिश कर रहा हूं। तो यह कुछ इस तरह होगा:लॉग 4j

MyApp-2011-01-07.log

बात यह है कि मैं DailyRollingFileAppender उपयोग करने के लिए नहीं करना चाहती। कारण यह है कि एक और स्क्रिप्ट होगी जो दैनिक चलती है जो लॉग फ़ोल्डर में सब कुछ बैकअप लेती है। यह टॉमकैट 5.5 के तहत चल रहा है।

क्या यह log4j में संभव है?

+0

क्षमा करें, तो आप इसे नई तारीख तक रोल नहीं करना चाहते हैं? तो मध्यरात्रि में क्या होता है? –

उत्तर

13

मुझे लगता है कि तुम सिर्फ आज की तारीख को रोकने के लिए कोड में एक प्रणाली गुण सेट कर सकते हैं:

static{ 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    System.setProperty("current.date", dateFormat.format(new Date())); 
} 

फिर अपने log4j.xml फ़ाइल में आप प्रणाली संपत्ति जब appender में लॉग फ़ाइल नाम निर्दिष्ट उपयोग कर सकते हैं :

<appender name="MYAPPENDER" class="org.apache.log4j.FileAppender"> 
    <param name="File" value="${user.home}/myApp-${current.date}.log" /> 

ईटीए: अब मैं इसके बारे में लगता है कि आप सेटअप करने के लिए प्रणाली संपत्ति एक स्थिर प्रारंभकर्ता का उपयोग कर सुनिश्चित करें कि इससे पहले कि log4j कॉन्फ़िगर किया गया है संपत्ति सेट किया गया है हो सकता है।

+0

क्या यह नई तारीख और दिन के लिए एक नई फाइल बनाएगा? या यह सिर्फ एक बार बनायेगा? – Steve

+0

यह थोड़ी देर हो गया है क्योंकि मैंने log4j को देखा है, लेकिन मुझे लगता है कि मैंने जो उदाहरण दिया है, वह उस दिन के लिए सिर्फ एक लॉग फ़ाइल बनाएगा जब आपने अपनी प्रक्रिया शुरू की थी। यदि आप हर दिन एक नई लॉग फ़ाइल चाहते हैं तो अपने log4j.xml में "रोलिंगफाइलएपेंडर" का प्रयोग करें। – BenjaminLinus

+0

मैं इसे आज़माउंगा, उत्तर देने के लिए धन्यवाद .. – Steve

5

अपने log4j.properties फ़ाइल में इस सेट करके देखें:

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.R.File=example.log 

में अधिक जानकारी यहां पाया जा सकता http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html

+0

तो, अगर मैं मध्यरात्रि में घूमने के लिए अपना लॉग सेट करता हूं, तो पुरानी लॉग फ़ाइलों का क्या होता है? प्रत्येक लॉग फ़ाइल में फ़ाइल दिनांक स्टैंप होता है, इसलिए मुझे चिंता है कि मेरे पास लॉग फाइलें होंगी जो निर्देशिका में महीने पुरानी होंगी। – Sun

9

आप इस जल्दी का प्रबंधन और अत्यधिक बस अपनी स्वयं की appender बनाकर mantainable कर सकते हैं।

बस इस तरह एक वर्ग बनाने के लिए:

import java.text.SimpleDateFormat; 
    import java.util.Date; 
    import org.apache.log4j.FileAppender; 

    public class CustomFileAppender extends FileAppender{ 

    @Override 
    public void setFile(String fileName) 
    { 
     if (fileName.indexOf("%timestamp") >= 0) { 
      Date d = new Date(); 
      SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSS"); 
      fileName = fileName.replaceAll("%timestamp", format.format(d)); 
     } 
     super.setFile(fileName); 
    } 
} 

और अपने गुण में रखें:

log4j.appender.file=com.portima.filenet.brio.ops.tools.CustomFileAppender 
    log4j.appender.file.File=${log}/general.%timestamp.log 

अब आप फ़ाइल नाम के किसी भी प्रकार आप चाहते हैं दे सकते हैं।

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