web-dev-qa-db-ja.com

警告とエラーのみを表示するようにMavenのログレベルを変更するにはどうすればよいですか?

MavenがINFOメッセージを表示しないようにしたいのですが、警告とエラー(ある場合)のみを表示したいです。

できればmavenを呼び出すコマンドラインを変更することで、これをどのように達成できますか?

129
sorin

-qまたは--quietパラメーターを使用してMavenを実行すると、エラーのみが表示されます。警告も表示する設定は知りませんが、情報レベルはありません。

107
Ruben

質問に答える

私も解決策に興味があるので、私は小さな調査をしました。

Mavenコマンドラインの詳細オプション

http://books.sonatype.com/mvnref-book/reference/running-sect-options.html#running-sect-verbose-option

  • -eエラーの場合
  • -Xデバッグ用
  • -qエラーのみ

Mavenロギング設定ファイル

現在、maven 3.1.xはSLF4Jを使用してSystem.outにログインします。ファイルのログ設定を変更できます。

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

ページによると: http://maven.Apache.org/maven-logging.html

コマンドライン設定

次のように、コマンドラインパラメーターを介してシンプルロガーのデフォルトのログレベルを設定できるはずだと思います。

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

しかし、私はそれを動作させることができませんでした。これに関する唯一の問題は、Mavenがクラスパス上の設定ファイルからデフォルトレベルを選択することだと思います。 System.propertiesを介して他の設定もいくつか試しましたが、すべて失敗しました。

付録

Githubでslf4jのソースを見つけることができます: slf4j github

シンプルロガーのソースはこちら slf4j/jcl-over-slf4j/src/main/Java/org/Apache/commons/logging/impl/SimpleLog.Java

神経叢ローダーはsimplelogger.propertiesをロードします。

83
kisp

Linux:

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

または

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

Windows:

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

たとえば、MAVEN_OPTSでこれを実現できます。
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean

システムプロパティをコマンドラインに直接配置するのではなく。 (少なくともMaven 3.3.1の場合。)

すべてのMaven呼び出しでログインのロギングを変更する場合は、~/.mavenrcを設定するためにMAVEN_OPTSを使用することを検討してください。

28
binkley

Logbackを使用している場合、次の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>
14
Pawel Wrzeszcz

残念ながら、Maven 3を使用しても、ソースコードにパッチを適用するしかありません。

その方法を簡単に説明します。

Maven 3リポジトリのクローンまたはフォーク: "git clone https://github.com/Apache/maven-3.git "

Org.Apache.maven.cli.MavenCli#loggingを編集し、変更します

cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );

cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );

現在のスナップショットバージョンでは、270行目にあります。

次に、「mvn install」を実行するだけで、新しいMavenディストリビューションは「Apache-maven\target \」フォルダーに配置されます。

リファレンスについては、この差分を参照してください: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131

5

最も簡単な方法は、${maven.projectBasedir}/.mvn/jvm.configサポートを利用するために Maven 3.3.1 以上にアップグレードすることです。

次に、MavenのSL4FJの SimpleLogger サポートのオプションを使用して、すべてのロガーまたは特定のロガーを構成できます。たとえば、warnでログを記録するように構成されたPMDを除き、errorレベルですべての警告を行う方法を次に示します。

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

Mavenを使用したロギングの詳細については、 here を参照してください。

1
btiernay

maven sunfireプラグイン の2.20.1バージョンを使用すると、すべての警告がダンプストリームファイルに書き込まれます。例えば/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream

0
Hakan