केवल चेतावनी और त्रुटियों को प्रदर्शित करने के लिए मैवेन लॉगिंग स्तर कैसे बदलें?


142

मैं इन्फैन संदेशों को प्रदर्शित करने से मावेन को रोकना चाहता हूं, मैं केवल चेतावनी और त्रुटियों (यदि कोई हो) देखना चाहता हूं।

मैं इसे कैसे प्राप्त कर सकता हूं, अधिमानतः कमांड लाइन को बदलकर जो मैवेन कहता है?


प्रासंगिक विषय: stackoverflow.com/questions/71069/…-B, --batch-modeया कम क्रिया -qकरेगा mvn
स्टैनिस्लाव 10

जवाबों:


108

आपके सवाल का जवाब दे रहा हूं

मैंने एक छोटी सी जांच की क्योंकि मुझे भी समाधान में दिलचस्पी है।

मावेन कमांड लाइन वर्बोसिटी विकल्प

Http://books.sonatype.com/mvnref-book/reference/running-sect-options.html#running-sect-verbose-option के अनुसार

  • —मे त्रुटि के लिए
  • -X डीबग के लिए
  • -एक ही त्रुटि के लिए

मैवेन लॉगिंग कॉन्फ़िगरेशन फ़ाइल

वर्तमान में maven 3.1.x System.out में लॉग इन करने के लिए SLF4J का उपयोग करता है। आप फ़ाइल में लॉगिंग सेटिंग्स को संशोधित कर सकते हैं:

${MAVEN_HOME}/conf/logging/simplelogger.properties

पृष्ठ के अनुसार: http://maven.apache.org/maven-logging.html

कमांड लाइन सेटअप

मुझे लगता है कि आपको कमांड लाइन पैरामीटर के माध्यम से सरल लकड़हारे के डिफ़ॉल्ट लॉग स्तर को इस तरह सेट करने में सक्षम होना चाहिए:

$ mvn clean package -Dorg.slf4j.simpleLogger.defaultLogLevel=debug

लेकिन मुझे यह काम करने के लिए नहीं मिला । मुझे लगता है कि इस के साथ ही समस्या है, maven वर्ग फ़ाइल पर config फ़ाइल से डिफ़ॉल्ट स्तर उठाता है। मैंने System.properties के माध्यम से कुछ अन्य सेटिंग्स की भी कोशिश की, लेकिन वे सभी असफल रहे।

अनुबंध

आप यहाँ gfub पर slf4j का स्रोत पा सकते हैं: slf4j github

सिम्पलॉगर का स्रोत यहां: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java

प्लेक्सस लोडर लोड करता है simplelogger.properties


2
क्या आपको simplelogger.propertiesकाम करने में बदलाव मिला ? जब मैं org.slf4j.simpleLogger.warnLevelStringसेटिंग mvn compileअपडेट को उचित रूप से बदलता हूं , लेकिन यह org.slf4j.simpleLogger.defaultLogLevelसेटिंग को अनदेखा करता प्रतीत होता है । यह सूचना स्तर पर भी लॉग करता है, तब भी जब मैं चेतावनी या त्रुटि के लिए सेट करता हूं।
एल्डन

1
@ बुजुर्ग, मुझे वही व्यवहार मिल रहा है। यह बस नजरअंदाज कर दिया है।
jax

18
मेरे लिए यह पता चला कि बिल्ड कमांड में "-Dorg.slf4j.simpleLogger.defaultLogLevel = info" जोड़ने का कोई प्रभाव नहीं पड़ता है। यदि मैं इस तरह MAVEN_OPTS में निर्माण से पहले इसे परिभाषित करता हूं: "MAVEN_OPTS = $ MAVEN_OPTS -Dorg.slf4j.simpleLogger.defaultLogLeLe = डीबग" निर्यात करें, तो यह $ {MAVEN_HOME} /conf/logf/logim/logim/logim/logim/logim/logim/logim/logim में पूर्ण रूप से काम करता है। ।
गैबोर लिप्टेक

1
एल्डन, गैबोर लिप्टेक: और मेरे लिए दो तरीकों में से कोई भी काम नहीं करता है। :( मैं मावेन 3.2.5 का उपयोग कर रहा हूँ।
ग्रेग डबिकि

1
यदि विंडोज़, बैट फाइल में, सेट MAVEN_OPTS =% MAVEN_OPTS% -Dorg.slf4j.simpleLogger.defaultLogLevel = चेतावनी का प्रयोग करें
feilong

45

लिनक्स:

mvn validate clean install | egrep -v "(^\[INFO\])"

या

mvn validate clean install | egrep -v "(^\[INFO\]|^\[DEBUG\])"

खिड़कियाँ:

mvn validate clean install | findstr /V /R "^\[INFO\] ^\[DEBUG\]"

5
लेकिन अगर बिंदु
mvan के

Windows मशीन पर हम कैसे प्राप्त कर सकते हैं जैसे कि egrep उस पर काम नहीं करता है?
हेमंतो

कुछ इस तरहmvn validate clean install | findstr /V /B "\[INFO\]" | findstr /V /B "\[WARN\]"
टॉम एच।

ऐसा लगता है कि findstrरेगेक्स और अन्य विकल्पों का समर्थन करता है, जो इसे अधिक सफल
टॉम एच।

mvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
टॉम एच।

32

आप उदाहरण के लिए MAVEN_OPTS के साथ इसे प्राप्त कर सकते हैं
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean

सिस्टम की संपत्ति को सीधे कमांड लाइन पर रखने के बजाय। (कम से कम मावेन 3.3.1 के लिए।)

~/.mavenrcसेटिंग के लिए उपयोग करने पर विचार करें MAVEN_OPTSयदि आप सभी मावेन इनवोकेशन में अपने लॉगिन के लिए लॉगिंग को बदलना चाहते हैं।


2
यह काम करने लगता है क्योंकि मैं चेतावनी और सूचना संदेश को त्रुटि के स्तर को सेट करके अक्षम कर सकता था, लेकिन दुर्भाग्य से यह नियमित आउटपुट से भी बंद हो गया। मैं वास्तव में कुछ चेतावनियों को निष्क्रिय करने की कोशिश कर रहा था, जबकि help:evaluateमूल्य project.versionऔर इस आउटपुट को प्रिंट करने के लिए लक्ष्य चल रहा था (हालांकि लगता नहीं है कि slf4jयह भी बंद हो गया)।
हरदिवस

एकमात्र उत्तर जो मावेन इंस्टॉलेशन के साथ स्थायी रूप से गड़बड़ किए बिना काम करता है। एक अन्य कारण मावेन बिल्ड सिस्टम के बीच एक डायनासोर है - इसमें सामान्य ज्ञान आवश्यकताओं के लिए समर्थन नहीं है।
अभिजीत सरकार

16

यदि आप लॉगबैक का उपयोग कर रहे हैं, तो बस इस logback-test.xmlफाइल को src/test/resourcesडायरेक्टरी में रखें:

<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>
<root level="INFO">
    <appender-ref ref="STDOUT" />
</root>
</configuration>

3

आप कमांडलाइन में ही नीचे का उपयोग करके इसे प्राप्त कर सकते हैं

 -e for error
-X for debug
-q for only error

जैसे:

mvn test -X -DsomeProperties='SomeValue' [For Debug level Logs]
mvn test -e -DsomeProperties='SomeValue' [For Error level Logs]
mvn test -q -DsomeProperties='SomeValue' [For Only Error Logs]


2

दुर्भाग्य से, maven 3 के साथ भी ऐसा करने का एकमात्र तरीका स्रोत कोड को पैच करना है।

यहाँ संक्षिप्त निर्देश है कि कैसे करें।

क्लोन या कांटा मावेन 3 रेपो: "गिट क्लोन https://github.com/apache/mavenLE.it "

संपादित करें org.apache.maven.cli.MavenCli # लॉगिंग, और परिवर्तन

cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );

सेवा

cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );

वर्तमान स्नैपशॉट संस्करण में यह पंक्ति 270 पर है

फिर बस "mvan install" चलाएं, आपका नया maven distro "apache-maven \ target \" फ़ोल्डर में स्थित होगा

संदर्भ के लिए इसे देखें: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131


1
यह उत्तर अभी तक OBSOLETE है - a) रेपो URL बदल गया है, b) इस कोड में कोई INFO स्तर का विवरण नहीं है, c) diff URL काम नहीं करता है।
ग्रेग डबिकि

इससे कोई फर्क नहीं पड़ता कि कोड कहां उपयोग करता है - प्लगइन्स को विकसित करते समय, आपके मोजो को मावेन लकड़हारे पर भरोसा करना चाहिए getLog()- यदि आप कॉन्फ़िगरेशन के साथ रह सकते हैं।
एडम

1

सबसे आसान तरीका समर्थन का लाभ लेने के लिए मावेन 3.3.1 या उच्चतर में अपग्रेड करना है ${maven.projectBasedir}/.mvn/jvm.config

तो फिर तुम Maven के SL4FJ से किसी भी विकल्प का उपयोग कर सकते SimpleLogger सभी वालों या विशेष वालों कॉन्फ़िगर करने के लिए समर्थन करते हैं। उदाहरण के लिए, warnपीएमडी को छोड़कर जो लॉग ऑन करने के लिए कॉन्फ़िगर किया गया है, को छोड़कर, सभी स्तरों पर चेतावनी देने का तरीका बताया गया है error:

cat .mvn/jvm.config
-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.net.sourceforge.pmd=error

मावेन के साथ लॉगिंग के बारे में अधिक जानकारी के लिए यहां देखें ।


1

बदलने infoके लिए errorमें simplelogging.propertiesफ़ाइल आपकी आवश्यकता को प्राप्त करने में मदद मिलेगी।

बस नीचे की पंक्ति का मान बदलें

org.slf4j.simpleLogger.defaultLogLevel=info 

सेवा

org.slf4j.simpleLogger.defaultLogLevel=error

0

मैंने देखा है जब मावेन सनफ़ायर प्लगइन के 2.20.1 संस्करण का उपयोग किया जाता है , तो सभी चेतावनियाँ एक डंपस्ट्रीम फ़ाइल के नीचे लिखी जाती हैं। जैसे/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream


0

निम्नलिखित गुणों simplelogger.propertiesमें जाएं ${MAVEN_HOME}/conf/logging/और सेट करें:

org.slf4j.simpleLogger.defaultLogLevel=warn
org.slf4j.simpleLogger.log.Sisu=warn
org.slf4j.simpleLogger.warnLevelString=warn

और खबरदार: warnनहींwarning

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.