में एपेंडर में गतिशील फ़ाइल नाम कैसे दें I लॉग जानकारी के लिए log4j का उपयोग कर रहा हूं। मैंने लॉग फ़ाइलों को बनाने के लिए log4j.xml
फ़ाइल का उपयोग किया है। मैंने प्रत्येक लॉग फ़ाइल के लिए param
टैग मान के रूप में पूर्ण पथ दिया है।log4j.xml
उदा .:
<appender name="FA" class="org.apache.log4j.DailyRollingFileAppender">
<param name="DatePattern" value="'_'yyyyMMdd"/>
<param name="File" value="D:/logFiles/GPreprocessor.log"/>
<layout class="com.dnb.genericpreprocessor.common.log.AppXMLLayout"/>
</appender>
मैं "GPreprocessor.log" लिखने के लिए सीधे नहीं करना चाहती। असल में, मेरे प्रोजेक्ट के नाम के आधार पर, वह फ़ाइल नाम गतिशील है। उदाहरण के लिए, यदि मैं प्रोग्राम ABC.java चलाता हूं, तो लॉगिंग D:/logFiles/ABC.log
पर जाना चाहिए, लेकिन यदि मैं XYZ.java चलाता हूं, तो लॉगिंग D:/logFiles/XYZ.log
पर जाना चाहिए। फ़ाइल का स्थान हमेशा वही रहेगा: D:/logFiles/
। मैं लॉग फ़ाइल के नाम को गतिशील रूप से कैसे बदल सकता हूं?
log4j.xml में $ के रूप में चर को परिभाषित {चर}:
<appender name="FILE" class="org.apache.log4j.FileAppender">
<param name="File" value="${logfilename}.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d::[%t]::%-5p::%c::%x - %m%n" />
</layout>
</appender>
तो सुनिश्चित करें कि आप सिस्टम गुण सेट बनाने के लिए जब आप इस तरह के रूप में अपने JVM शुरू
की तरह फ़ाइल परम के मूल्य विशेषता में
log_dir
संपत्ति का उपयोग करेगा यह समर्थन/ले अगर मैं में मान देते हैं।गुण फ़ाइल? यानी, JVM की शुरुआत में मान को परिभाषित करने के बजाय, क्या मैं इसे .properties फ़ाइल में परिभाषित कर सकता हूं? – SuRaयदि आप System.setProperty ("logfilename", "a_cool_logname") का उपयोग करते हैं; सुनिश्चित करें कि आप कुछ भी लॉग इन करने से पहले इसे सेट करें – James