Maven günlük kaydı düzeyini yalnızca uyarı ve hataları görüntülemek üzere nasıl değiştirebilirim?


142

Maven'in INFO mesajlarını görüntülemesini önlemek istiyorum, sadece UYARILAR ve HATALAR (varsa) görmek istiyorum.

Tercihen maven çağıran komut satırını değiştirerek bunu nasıl başarabilirim?


İlgili konu: stackoverflow.com/questions/71069/… . -B, --batch-modeveya daha az ayrıntılı -qyapacaktır mvn.
Stanislav

Yanıtlar:


108

Sorunuzu cevaplama

Küçük bir araştırma yaptım çünkü çözümle de ilgileniyorum.

Maven komut satırı ayrıntı seçenekleri

Http://books.sonatype.com/mvnref-book/reference/running-sect-options.html#running-sect-verbose-option'a göre

  • -e hata için
  • Hata ayıklama için -X
  • -q sadece hata için

Maven günlüğü yapılandırma dosyası

Şu anda maven 3.1.x System.out oturum açmak için SLF4J kullanır. Günlük ayarlarını dosyada değiştirebilirsiniz:

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

Sayfaya göre: http://maven.apache.org/maven-logging.html

Komut satırı kurulumu

Basit günlükçünün varsayılan günlük düzeyini, aşağıdaki gibi bir komut satırı parametresi aracılığıyla ayarlayabilmeniz gerektiğini düşünüyorum:

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

Ama işe yaramadım . Sanırım bu tek sorun, maven sınıf yolunda yapılandırma dosyasından varsayılan düzeyi alır. Ayrıca System.properties aracılığıyla birkaç başka ayar denedim, ancak hepsi başarısız oldu.

apandis

Github'da slf4j kaynağını burada bulabilirsiniz: slf4j github

Simplelogger'ın kaynağı: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java

Pleksus yükleyici simplelogger.properties.


2
aldın simplelogger.propertiesdeğişim çalışma? org.slf4j.simpleLogger.warnLevelStringAyar mvn compilegüncellemelerini uygun şekilde değiştirdiğimde , ancak ayarı yok sayıyor gibi görünüyor org.slf4j.simpleLogger.defaultLogLevel. Ayrıca uyarmak veya hata ayarlamak için bile bilgi düzeyinde günlükleri.
Alden

1
@Alden, aynı davranışı alıyorum. sadece göz ardı edilir.
jax

18
Benim için inşa komutuna "-Dorg.slf4j.simpleLogger.defaultLogLevel = info" eklemenin herhangi bir etkisi olmadığı ortaya çıktı. Bunu MAVEN_OPTS içindeki derlemeden önce bu şekilde tanımlarsam: "MAVEN_OPTS = $ MAVEN_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel = debug" dosyasını dışa aktarırsam, $ {MAVEN_HOME} /conf/logging/simplelogger.properties dosyasını değiştirmeden mükemmel çalışır .
Gábor Lipták

1
Alden, Gábor Lipták: ve benim için iki yöntemin hiçbiri işe yaramıyor. :( Maven 3.2.5 kullanıyorum.
Greg Dubicki

1
Windows, yarasa dosyasında MAVEN_OPTS =% MAVEN_OPTS% -Dorg.slf4j.simpleLogger.defaultLogLevel = uyar
feilong

45

Linux:

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

veya

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

Pencereler:

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

5
ama nokta mvn sırasında gereksiz IO azaltmak için ise ... o zaman gerçekten hile yok
HoaPhan

Egrep'in üzerinde çalışmadığı için Windows makinesinde aynı şeyi nasıl başarabiliriz?
hemanto

like likemvn validate clean install | findstr /V /B "\[INFO\]" | findstr /V /B "\[WARN\]"
Tom H

Görünüşe göre daha findstrdüzenli hale getirebilecek normal ifade ve diğer seçenekleri destekliyor gibi görünüyor - ss64.com/nt/findstr.html
Tom H

mvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
Tom H

32

Bunu MAVEN_OPTS ile başarabilirsiniz, örneğin
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean

System özelliğini doğrudan komut satırına koymak yerine. (En azından maven 3.3.1 için.)

Tüm maven çağrılarında oturum açmanızın günlüğe kaydedilmesini değiştirmek isteyip istemediğinizi ~/.mavenrcayarlamak için kullanmayı düşünün MAVEN_OPTS.


2
Seviyeyi hataya ayarlayarak uyarı ve bilgi mesajını devre dışı bırakabileceğim için bu işe yarıyor gibi görünüyor, ancak maalesef normal çıktıyı da kapattı. Aslında help:evaluatedeğerini yazdırmak için hedef çalışırken bazı uyarıları devre dışı bırakmaya çalışıyordum project.versionve bu çıktı (olsa da görünmüyor slf4j) da kapatıldı.
haridsv

Maven kurulumuyla uğraşmadan çalışan tek cevap. Maven'in bir başka nedeni, yapı sistemi arasında bir dinozor - sağduyu gereksinimleri için desteği yok.
Abhijit Sarkar

16

Logback kullanıyorsanız, bu logback-test.xmldosyayı src/test/resourcesdizine koymanız yeterlidir :

<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

bunu komut satırının kendisinde aşağıda kullanarak yapabilirsiniz

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

Örneğin :

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

Ne yazık ki, maven 3 ile bile bunu yapmanın tek yolu kaynak kodunu düzeltmektir.

İşte bunun nasıl yapılacağı ile ilgili kısa talimat.

Klon veya çatal Maven 3 repo: "git clone https://github.com/apache/maven-3.git "

Org.apache.maven.cli.MavenCli # günlüğünü düzenleme ve değiştirme

cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );

için

cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );

Geçerli anlık görüntü sürümünde 270. satırda

Sonra sadece "mvn install" komutunu çalıştırın, yeni maven dağıtımınız "apache-maven \ target \" klasöründe bulunacaktır

Referans için bu farka bakın: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131


1
Bu yanıt şu andan itibaren OBSOLETE'dir - a) repo URL'si değişti, b) bu ​​kodda INFO seviye ifadesi yok, c) diff URL çalışmıyor.
Greg Dubicki

Kodun nerede INFO kullandığı önemli değil - eklentiler geliştirirken getLog(), yapılandırmanızla yaşayabiliyorsanız , mojo'unuz maven logger'a güvenmelidir .
Adam

1

En basit yol, destekten yararlanmak için Maven 3.3.1 veya üstüne yükseltmektir ${maven.projectBasedir}/.mvn/jvm.config.

Ardından tüm kaydedicileri veya belirli günlükleri yapılandırmak için Maven'in SL4FJ'sinin SimpleLogger desteğindeki herhangi bir seçeneği kullanabilirsiniz . Örneğin, warnoturum açacak şekilde yapılandırılmış bir PMD dışında, tüm uyarı düzeylerinin nasıl yapılacağı aşağıda açıklanmıştır error:

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

Maven ile oturum açma hakkında daha fazla bilgi için buraya bakın .


1

Değişen infoiçin errorde simplelogging.propertiesdosyanın gereksinimi ulaşmada yardımcı olacaktır.

Sadece aşağıdaki satırın değerini değiştirin

org.slf4j.simpleLogger.defaultLogLevel=info 

için

org.slf4j.simpleLogger.defaultLogLevel=error

0

Maven sunfire eklentisinin 2.20.1 sürümünü kullandığımda fark ettim , tüm uyarılar bir döküm dosyasına yazılır. Örneğin/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream


0

Git simplelogger.propertiesde ${MAVEN_HOME}/conf/logging/ve aşağıdaki özellikleri ayarlayın:

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

Ve dikkat:, warndeğilwarning

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.