2011-01-14 8 views
6

मैं वर्तमान में log4j में DailyRollingFileAppender कक्षा का उपयोग कर रहा जोड़कर दैनिक लॉग फ़ाइल करने के लिए, लेकिन मैं निम्नलिखित प्रारूप में अलग लॉग फाइल करना चाहते हैं: तो मैं अंतप्रोग्राम निष्पादन के लिए log4j में लॉग फ़ाइलों को आप कैसे बनाते हैं?

DATA.log.<date>_<time>_<random_#> 

इस कार्यक्रम के निष्पादन प्रति एक बार किया जाना चाहिए कुछ की तरह ... के साथ

DATA.log.2011-01-13_12-46-38_<26> 
DATA.log.2011-01-13_12-46-38_<79> 
DATA.log.2011-01-13_12-46-38_<590> 

कहाँ विभिन्न वातावरण से अलग लॉग फाइल एक साथ जमा किया जा सकता है।

क्या फ़ाइल एपेंडर क्लास को विस्तार किए बिना ऐसा करने के लिए वैसे भी है?

DATA.log.<date>_<time>_<sequential_#>.log 

धन्यवाद

संपादित करें:: मैं पहले से ही DailyRollingFileAppender उपयोग कर रहा हूँ DATA.log.2011-01-13 की तरह कुछ पाने के लिए कम से कम, वहाँ करने के लिए एक तरीका है। मैं क्या जानना चाहता हूं कि प्रत्येक प्रोग्राम निष्पादन (या प्रत्येक प्रोग्राम निष्पादन से पहले) के बाद रोलओवर को लॉग फ़ाइल प्राप्त करें और अंत में एक यादृच्छिक संख्यात्मक स्ट्रिंग जोड़ें।

+0

प्रासंगिक: http://en.wikipedia.org/wiki/Aspect-oriented_programming –

+0

धन्यवाद डेव। एक और सवाल, मैं अपनी कक्षा में एक संपत्ति जोड़ने की कोशिश कर रहा हूं, यानी log4j.appender.DATA.CustomProperty = value। मैं यह कैसे करु? – Kevin

+0

कभी नहीं ... यह आसान है, मैंने अभी इसे पूंजीकृत नहीं किया है:/ – Kevin

उत्तर

3

पर एक नजर है: Setting a log file name to include current date in Log4j

संपादित करें: अपनी परियोजना के लिए इस वर्ग को जोड़ें, और appender के रूप में उपयोग:

import java.util.Random; 

import org.apache.log4j.DailyRollingFileAppender; 

public class MyAppender extends DailyRollingFileAppender {  
    @Override 
    public void setFile(String fileName) { 
     if (fileName.indexOf("%rnd") >= 0) { 
      Random r = new Random(); 
      fileName = fileName.replaceAll("%rnd", Integer.toString(r.nextInt())); 
     } 
     super.setFile(fileName); 
    } 
} 

तो बस की तरह कुछ करने के लिए अपने appender के फ़ाइल नाम सेट करें:। फ़ाइल नाम% rnd.log

log4j.appender.R=MyAppender.MyAppender 
log4j.appender.R.File=.\\test.%rnd.log 
+0

मैं पहले से ही कर रहा हूं कि आपके द्वारा पोस्ट किया गया यूआरएल क्या कहता है। मैं जो करना चाहता हूं वह प्रत्येक प्रोग्राम निष्पादन के बाद अंत में एक अतिरिक्त यादृच्छिक स्ट्रिंग जोड़ना है ताकि मैं एकाधिक लॉग का ट्रैक रख सकूं। मैं इसके लिए अपना प्रश्न संपादित करूंगा। – Kevin

+0

ठीक है, इस पर काम कर रहा है;)। मेरे पास यह कहीं भी – Twister

+0

है और आप कुछ अन्य नए पैटर्न भी आसानी से जोड़ सकते हैं। और हम इसे कई परियोजनाओं में पार करते हैं – Twister

1

अपने कोड में सेट एक नए माहौल संपत्ति:

randomString = Long.toString(Math.abs((new Random()).nextLong()), Character.MAX_RADIX); 
System.setProperty("randomString", randomString); 

फिर, आपकी log4j फ़ाइल में ${randomString} का उपयोग करके उस चर का उपयोग करें।

उम्मीद है कि यह मदद करता है।

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