2010-06-04 17 views
18

मैं इस पथ के साथ फ़ाइलों में लॉग इन करने के लिए अपने वेब एप्लिकेशन चाहते हैं:/ webapp/लॉगlog4j रिश्तेदार फ़ाइल पथ

मैं log4j.properties फ़ाइल में निरपेक्ष पथ सेट कर सकते हैं, लेकिन उत्पादन वातावरण के निर्देशिका संरचना अलग होगा। क्या कोई तरीका है कि मैं इसे कर सकता हूं?

log4j.appender.f=org.apache.log4j.RollingFileAppender 
log4j.appender.f.layout=org.apache.log4j.PatternLayout 
log4j.appender.f.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
log4j.appender.f.File=log.out 
log4j.appender.f.MaxFileSize=100KB 

यह मेरा ग्रहण निर्देशिका में फ़ाइल का नाम log.log में मुद्रण लॉग है (ग: ग्रहण //)

यहाँ मैं कैसे करना है। मैं टॉमकैट 6 का उपयोग कर रहा हूं।

+0

हाँ, मुझे खेद है – Bob

उत्तर

34

log4j सिस्टम गुणों का विस्तार करने में सक्षम है, इसलिए यदि आपका उत्पादन वातावरण निर्देशिका के लिए एक संपत्ति सेट करता है जिसे आप लॉग फ़ाइलों को रखना चाहते हैं, तो आप इसे log4j से संदर्भित कर सकते हैं। गुण फ़ाइल।

उदाहरण के लिए, हम टॉमकैट पर वेबपैप्स भी तैनात करते हैं। टॉमकैट catalina.base नामक एक सिस्टम प्रॉपर्टी सेट करता है जो टॉमकैट बेस निर्देशिका को इंगित करता है। एक log4j विन्यास कि इस तरह दिखता है:

log4j.appender.f.File = ${catalina.base}/logs/myapp.log 

myapp.log फ़ाइल में परिणाम होगा बिलाव के तहत लॉग निर्देशिका में संग्रहीत किया जा रहा निर्देशिका स्थापित करें।

+0

बहुत बहुत धन्यवाद! – Bob

+5

डेबियन (उबंटू समेत) पर, $ {catalina.home} आपको कहीं भी नहीं ले जाता है क्योंकि उस बिंदु/usr/share/tomcat6 पर अंक हैं जिनके पास/var/log/tomcat6 का कोई लिंक नहीं है। आपका लॉगफाइल नहीं बनाया जाएगा। $ {catalina.base} अंक/var/lib/tomcat6 पर अंक हैं जिनके पास लॉग नाम/लिंक/tom/tomcat6 है और यह उपयोग करने वाला एक है। उम्मीद है कि यह किसी की मदद करता है। –

2

log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File = $ {catalina.home} /logs/myapp.log
log4j.appender.A1.DatePattern = ' -'yyyy-MM-dd'.log '

इस उदाहरण में, आपके वर्तमान लॉगफाइल को "myapp.log" नाम दिया जाएगा। मध्यरात्रि में (या जब पहली लॉग प्रविष्टि अगले दिन होती है) "myapp.log" का नाम बदलकर "myapp-yyyy-mm-dd.log" कर दिया जाएगा (उदाहरण के लिए,
"myapp-2010-12-21.log ") और एक नया" myapp.log "बनाया जाएगा।

10

इसका सबसे अच्छा प्रदान करने के लिए:
log4j.appender.f.File = ./myapp.log

। वर्तमान फ़ोल्डर का प्रतिनिधित्व करता है (आमतौर पर परियोजना रूट फ़ोल्डर)। यह विभिन्न ओएस पर भी काम करता है। यदि आप $ {catalina.home} का उपयोग करते हैं तो आप टॉमकैट के माध्यम से एक वेब एप्लिकेशन नहीं चला रहे हैं।
http://www.matjazcerkvenik.si/Site/Java::Log4j_Properties.html (अद्यतन लिंक http://www.matjazcerkvenik.si/developer/java-log4j.php)

चीयर्स:

इस पोस्ट में मुझे इस मुद्दे के माध्यम से जाने में मदद की!

+2

क्या यह डिफ़ॉल्ट रूप से पहले से ही मौजूदा फ़ोल्डर नहीं है? (यानी, पथ में "./" को आगे बढ़ाने से कोई फर्क नहीं पड़ता) – golimar

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