如何更改Maven日志级别只显示警告和错误?

我想阻止maven显示INFO消息,我只想看到警告和错误(如果有的话)。

我怎么能实现这个,最好通过改变调用maven的命令行?

使用-q或–quiet参数运行maven只会显示错误。 我不知道一个设置也显示警告,但没有信息级别。

回答你的问题

我做了一个小调查,因为我也对解决scheme感兴趣。

Maven命令行详细选项

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

  • -e出错
  • -X进行debugging
  • -q只有错误

Maven日志loggingconfiguration文件

目前Maven 3.1.x使用SLF4Jlogin到System.out。 您可以修改文件中的日志logging设置:

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

根据页面: http : //maven.apache.org/maven-logging.html

命令行设置

我想你应该可以通过命令行参数设置简单logging器的默认日志级别,如下所示:

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

我无法实现它的工作 。 我猜唯一的问题是,maven从类path的configuration文件中select默认级别。 我也尝试了一些通过System.properties的其他设置,但都不成功。

附录

你可以在github上findslf4j的源代码: slf4j github

这里的simplelogger的源代码: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java

plexus加载器加载simplelogger.properties

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

要么

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

例如,您可以使用MAVEN_OPTS来实现这一点
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean

而不是直接将系统属性放在命令行上。 (至less对于maven 3.3.1。)

考虑使用~/.mavenrc来设置MAVEN_OPTS如果你想logging在所有maven调用中改变你的login。

如果您使用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> 

不幸的是,即使使用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

我注意到,在使用maven sunfire插件的2.20.1版本时,所有的警告都被写入到一个dumpstream文件中。 例如/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream

Interesting Posts