2010-12-23 14 views
5

मैं एक दूरस्थ सर्वर पर एक युद्ध तैनात करने के लिए कार्गो मेवेन प्लगइन का उपयोग कर रहा हूं, और मुझे समस्याएं आ रही हैं। मैं शायद उस समस्या के लिए दूसरा प्रश्न बनाउंगा, लेकिन यह एक मैवेन प्लगइन की log4j कॉन्फ़िगरेशन को ओवरराइड करने के बारे में है। कार्गो जेबॉस सर्वर क्लाइंट पुस्तकालयों का उपयोग जेबॉस सर्वर (जो मैं करने की कोशिश कर रहा हूं) को सामान भेजने के लिए करता हूं। जेबॉस लाइब्रेरी log4j का उपयोग करती है। कार्गो किसी भी तरह की मैपिंग परत स्थापित नहीं करता है जिसे मैं जानता हूं।मैं एक मैवेन प्लगइन के log4j कॉन्फ़िगरेशन को ओवरराइड कैसे करूं?

तो, अनिवार्य रूप से, मैवेन प्लगइन की निर्भर लाइब्रेरी में लॉग संदेश हो रहे हैं। मैं -Dlog4j.debug स्थापित करने की कोशिश की और इस जानकारी मिल गया:

log4j: Trying to find [log4j.xml] using ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.5, parent: ClassRealm[maven.api, parent: null]] class loader. 
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource(). 
log4j: Trying to find [log4j.properties] using context classloader ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.5, parent: ClassRealm[maven.api, parent: null]]. 
log4j: Using URL [jar:file:/C:/Users/username/.m2/repository/org/jboss/jbossts/jbossjts/4.13.1.Final/jbossjts-4.13.1.Final.jar!/log4j.properties] for automatic log4j configuration. 
log4j: Reading configuration from URL jar:file:/C:/Users/username/.m2/repository/org/jboss/jbossts/jbossjts/4.13.1.Final/jbossjts-4.13.1.Final.jar!/log4j.properties 
log4j: Could not find root logger information. Is this OK? 
log4j: Parsing for [com.arjuna] with value=[INFO, default, stdout]. 
log4j: Level token is [INFO]. 
log4j: Category com.arjuna set to INFO 
log4j: Parsing appender named "default". 
log4j: Parsing layout options for "default". 
log4j: Setting property [conversionPattern] to [%d [%t] %-5p %c - %m%n]. 
log4j: End of parsing for "default". 
log4j: Setting property [maxBackupIndex] to [2]. 
log4j: Setting property [file] to [transaction.log]. 
log4j: Setting property [maxFileSize] to [500KB]. 
log4j: setFile called: transaction.log, true 
log4j: setFile ended 
log4j: Parsed "default" options. 
log4j: Parsing appender named "stdout". 
log4j: Parsing layout options for "stdout". 
log4j: Setting property [conversionPattern] to [%d [%t] %-5p %c - %m%n]. 
log4j: End of parsing for "stdout". 
log4j: Setting property [threshold] to [WARN]. 
log4j: Parsed "stdout" options. 
log4j: Handling log4j.additivity.com.arjuna=[null] 
log4j: Finished configuring. 
log4j:WARN No appenders could be found for logger (org.jnp.interfaces.TimedSocketFactory). 
log4j:WARN Please initialize the log4j system properly. 

तो मैं करने की कोशिश की स्थापना के -Dlog4j.configuration = mylog4j.properties लेकिन यह मिल गया:

log4j: Trying to find [mylog4j.properties] using context classloader ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.5, parent: ClassRealm[maven.api, parent: null]]. 
log4j: Trying to find [mylog4j.properties] using ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.5, parent: ClassRealm[maven.api, parent: null]] class loader. 
log4j: Trying to find [mylog4j.properties] using ClassLoader.getSystemResource(). 
log4j: Could not find resource: [mylog4j.properties]. 
log4j:WARN No appenders could be found for logger (org.jnp.interfaces.TimedSocketFactory). 
log4j:WARN Please initialize the log4j system properly. 

ऐसा लगता है कि log4j कॉन्फ़िगरेशन फ़ाइल को Maven प्लगइन के क्लासपाथ में होना आवश्यक है, लेकिन मुझे नहीं पता कि वहां यादृच्छिक फ़ाइलों को कैसे शामिल किया जाए, केवल निर्भरताएं मैं वास्तव में इस जानकारी को सेट करना चाहता हूं ताकि मैं अपनी समस्या का निवारण करने के लिए जेबॉस पुस्तकालयों से डीबग जानकारी प्राप्त कर सकूं।

+0

समस्या का विस्तारित स्टैक ट्रेस वास्तव में, यह पहचानने में मेरी सहायता करता है कि अपवाद कहाँ उत्पन्न किया जा रहा था (और मैं धीरे-धीरे इसे हल करने पर काम कर रहा हूं।) फिर भी, ऐसा लगता है कि यह कैसे करना है उपयोगी जानकारी हो सकती है यह ओवरराइड, अगर यह भी संभव है। –

उत्तर

8

log4j.configuration के साथ आप एक संसाधन स्ट्रिंग सेट करेंगे। Log4j default initialization process और उदाहरणों पर एक नज़र डालें।

आप इस

-Dlog4j.configuration=mylog4j.properties 

की तरह एक वाक्य रचना का उपयोग करते हैं फ़ाइल classpath में की उम्मीद है। लेकिन आप इस

-Dlog4j.configuration=file:/<path>/mylog4j.properties 

जैसे पूरी तरह से योग्य फ़ाइल स्थान निर्दिष्ट करने के लिए एक वाक्यविन्यास का भी उपयोग कर सकते हैं।

+0

इसके लिए धन्यवाद। क्या मेवेन कमांड लाइन में कुछ भी जोड़ने के बिना ऐसा करने का कोई तरीका है? यानी फ़ाइल स्थान को प्लगइन के क्लासपाथ पर कॉन्फ़िगर करना है? –

+0

@nat k log4j प्रति डिफ़ॉल्ट रूप से एक कॉन्फ़िगरेशन फ़ाइल ([डिफ़ॉल्ट प्रारंभ] (https://logging.apache.org/log4j/1.2/manual.html#defaultInit) ढूंढने के लिए क्लासपाथ पर दिखता है) इसलिए यह पर्याप्त होना चाहिए कॉन्फ़िगरेशन फ़ाइल 'src/main/resource' में। यदि यह अन्य फ़ाइलों के साथ संघर्ष करता है तो आपको 'log4j.configuration' प्रॉपर्टी सेट करनी चाहिए। यह pom.xml में इसके लिए संभव होना चाहिए ताकि आपको कमांड लाइन की आवश्यकता न हो। – FrVaBe

+0

इसके लिए धन्यवाद। मैंने भी सोचा, लेकिन प्लगइन के साथ मैं (maven-docbkx-plugin) का उपयोग कर रहा हूं, log4j config फ़ाइल को src/main/संसाधनों से नहीं उठाया जा रहा है। मैं लॉग 4j.configuration चर सेट करने के लिए maven-set-Properties प्लगइन का उपयोग कर समाप्त हुआ। –