पारंपरिक मावेन निर्देशिकाओं का उपयोग करते समय मुझे log4j.properties फ़ाइल कहाँ डालनी चाहिए?
पारंपरिक मावेन निर्देशिकाओं का उपयोग करते समय मुझे log4j.properties फ़ाइल कहाँ डालनी चाहिए?
जवाबों:
src/main/resources
इसके लिए "मानक प्लेसमेंट" है।
अपडेट: उपरोक्त प्रश्न का उत्तर देता है, लेकिन इसका सबसे अच्छा समाधान नहीं है। इस पर अन्य उत्तरों और टिप्पणियों की जांच करें ... आप संभवत: जार के साथ अपने स्वयं के लॉगिंग गुणों को शिपिंग नहीं करेंगे, बल्कि वांछित लॉगिंग को कॉन्फ़िगर करने के लिए क्लाइंट (उदाहरण के लिए ऐप-सर्वर, स्टेज पर्यावरण, आदि) पर छोड़ दें। इस प्रकार, यह src/test/resources
मेरे पसंदीदा समाधान है।
नोट: ग्राहक / उपयोगकर्ता के लिए ठोस लॉग config छोड़ने की बात हो रही है, तो आप की जगह पर विचार करना चाहिए log4j
के साथ slf4j
अपने अनुप्रयोग में।
resources
और log4j.properties
उत्तर में उल्लिखित फ़ोल्डर में।
src/main/resources
डिफ़ॉल्ट रूप से कॉपी किया जाएगाtarget/classes
बस src/main/resources
इसे अंदर डालकर इसे कलाकृतियों के अंदर बांध दिया जाएगा। उदाहरण के लिए, यदि आपकी कलाकृति एक JAR है, तो आपके पास इसके log4j.properties
अंदर फ़ाइल होगी , जो लॉगिंग को विन्यास योग्य बनाने के अपने प्रारंभिक बिंदु को खो देती है।
मैं आमतौर पर इसे अंदर डालता हूं src/main/resources
, और इसे सेट करने के लिए आउटपुट देता हूं ताकि लक्ष्य:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${project.build.directory}</targetPath>
<includes>
<include>log4j.properties</include>
</includes>
</resource>
</resources>
</build>
इसके अतिरिक्त, वास्तव में इसे देखने के लिए log4j के लिए, आपको आउटपुट निर्देशिका को वर्ग पथ में जोड़ना होगा। यदि आपकी कलाकृति निष्पादन योग्य JAR है, तो संभवतः आपने इसे बनाने के लिए मावेन-असेंबली-प्लगइन का उपयोग किया है। उस प्लगइन के अंदर, आप JAR के वर्तमान फ़ोल्डर को वर्ग पथ में जोड़ सकते हैं Class-Path
जैसे कि एक प्रकट प्रविष्टि जोड़कर :
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.your-package.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
अब log4j.properties फ़ाइल आपकी JAR फ़ाइल के ठीक बगल में होगी, स्वतंत्र रूप से कॉन्फ़िगर करने योग्य।
ग्रहण से सीधे अपने आवेदन चलाने के लिए, जोड़ने के resources
अपने रन विन्यास में अपने classpath के लिए निर्देशिका: Run->Run Configurations...->Java Application->New
चयन Classpath
टैब, का चयन Advanced
करें और अपने को ब्राउज़ src/resources
निर्देशिका।
${project.build.directory}
जाना चाहिए - या वास्तविक पथ पर संपादित किया जाना चाहिए जो परियोजना मेरे स्थानीय ड्राइव में रहती है?
उसके लिए कुछ "डेटा माइनिंग" खाते src/main/resources
विशिष्ट स्थान हैं।
Google कोड खोज पर परिणाम :
src/main/resources/log4j.properties
: 4877src/main/java/log4j.properties
: 215 resources
नहीं है resource
, अगर मुझे सही याद है।
resource
केवल एक टाइपो था।
परियोजना को आरम्भ करने के लिए उपयोग किए जाने वाले संसाधनों को अधिमानतः src / main / resource फ़ोल्डर में रखा जाता है। निर्माण के दौरान इन संसाधनों को लोड करने में सक्षम करने के लिए, कोई बस संसाधन के रूप में मावेन परियोजना में pom.xml में प्रविष्टियाँ जोड़ सकता है
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
इनिशियलाइज़ेशन के लिए उपयोग किए जाने वाले इस फ़ोल्डर में अन्य .properties फाइलें भी रखी जा सकती हैं। यदि आप संसाधन फ़ोल्डर की संपत्तियों की फ़ाइलों में कुछ चर रखना चाहते हैं और उन्हें फ़िल्टर फ़िल्टर गुण फ़ाइलों से पॉप्युलेट करना चाहते हैं, तो फ़िल्टर करना सही है, जो कि src / main / फ़िल्टर में रखे जाते हैं, जो प्रोफाइल के रूप में सेट है, लेकिन यह पूरी तरह से एक अलग उपयोग मामला है । अभी के लिए, आप उन्हें अनदेखा कर सकते हैं।
यह एक महान संसाधन मावेन संसाधन प्लगइन्स है , यह उपयोगी है, बस अन्य अनुभागों के माध्यम से भी ब्राउज़ करें।
संसाधन फ़ाइलों को किसी अन्य स्थान पर रखना सबसे अच्छा समाधान नहीं है जिसका आप उपयोग कर सकते हैं:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<build>
उदाहरण के लिए जब संसाधन फाइलें (जैसे jaxb.properties) जावा कक्षाओं के साथ-साथ संकुल के अंदर गहराई से जाती हैं।
यदि आपकी log4j.properties या log4j.xml फ़ाइल src / main / resource के अंतर्गत नहीं मिली है तो इस PropertyConfigurator.configure ("log4j.xml") का उपयोग करें;
PropertyConfigurator.configure("log4j.xml");
Logger logger = LoggerFactory.getLogger(MyClass.class);
logger.error(message);
बिल्ड टैग के अंदर अपने pom.xml में संसाधन टैग से नीचे कोड जोड़ें। तो इसका मतलब है कि संसाधन टैग आपके pom.xml में बिल्ड टैग के अंदर होने चाहिए
<build>
<resources>
<resource>
<directory>src/main/java/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<build/>