2010-07-10 9 views
6

log4j.properties फ़ाइल में सापेक्ष पथ का उपयोग किया जाता है।मैं प्रोग्रामिक रूप से कहां खोज सकता हूं कि log4j लॉग फ़ाइलों को संग्रहीत किया जाता है?

लॉग प्रोग्राम संग्रहीत किए जाने पर प्रोग्राम को पूर्ण रूप से पूर्ण पथ कैसे मिल सकता है?

+0

लेकिन ... आप ऐसा क्यों करना चाहते हैं? Log4J किसी भी तरह से आप से अमूर्त माना जाता है। –

+0

@ पास्कल, डाउनलोड के लिए एक दृश्य इंटरफ़ेस के माध्यम से लॉग पहुंच प्रदान करना चाहते हैं। – JavaRocky

उत्तर

3

मुझे लगता है कि एक तरह से इस तरह है:

के बाद से पथ प्रणाली संपत्ति के सापेक्ष है "user.dir"

तो रिश्तेदार पथ = ./app.log{user.dir}/app.log

9

हो जाता है से: http://www.gunith.com/2010/11/how-to-get-the-file-path-of-a-log4j-log-file/

मान लें कि log4j.properties फ़ाइल नीचे दी गई है,

log4j.logger.migrationlog = INFO, migration 
log4j.appender.migration = org.apache.log4j.RollingFileAppender 
log4j.appender.migration.File = C:/work/log/migration.log 
log4j.appender.migration.MaxFileSize=20MB 
log4j.appender.migration.MaxBackupIndex=1 
log4j.appender.migration.layout = org.apache.log4j.PatternLayout 
log4j.appender.migration.layout.conversionPattern = %d %-5p %c - %m%n 

इस तरह के मामले में, अपने जावा कोड इस प्रकार होना चाहिए,

Logger logger = Logger.getLogger("migrationlog"); //Defining the Logger 
FileAppender appender = (FileAppender)logger.getAppender("migration"); 
return new File(appender.getFile()); 

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

+0

मैंने केवल एक गलती की: '(FileAppender) logger.getRootLogger() का उपयोग करने पर विचार करें। यदि आप रूट लॉगर के साथ काम करते हैं तो ऐपएंडेंडर ("माइग्रेशन")' प्राप्त करें। अन्यथा आपको एक NullPointerException मिलेगा। – muffin

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