如何更改maven日志记录级别以仅显示警告和错误?

时间:2011-01-24 12:43:10

标签: maven-2 logging maven

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

如何实现这一点,最好是通过更改调用maven的命令行?

11 个答案:

答案 0 :(得分:100)

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

答案 1 :(得分:78)

回答您的问题

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

Maven命令行详细程度选项

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

  • -e for error
  • -X for debug
  • -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

此处simplelogger的来源:slf4j/jcl-over-slf4j/src/main/java/org/apache/commons/logging/impl/SimpleLog.java

丛加载器加载simplelogger.properties

答案 2 :(得分:41)

Linux的:

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

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

视窗:

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

答案 3 :(得分:25)

您可以使用MAVEN_OPTS实现此目的,例如
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean

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

如果您希望在所有maven调用中更改登录日志,请考虑使用~/.mavenrc设置MAVEN_OPTS

答案 4 :(得分:15)

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

答案 5 :(得分:6)

您可以通过在命令行本身中使用以下命令来实现此目的

z-index

例如:

#page

答案 6 :(得分:5)

不幸的是,即使使用maven 3,唯一的方法就是修补源代码。

以下是如何做到这一点的简短说明。

克隆或分叉Maven 3 repo:“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

答案 7 :(得分:1)

转到simplelogger.properties中的${MAVEN_HOME}/conf/logging/并设置以下属性:

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

要当心:warn,而不是warning

答案 8 :(得分:0)

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

答案 9 :(得分:0)

最简单的方法是升级到Maven 3.3.1或更高版本以利用${maven.projectBasedir}/.mvn/jvm.config支持。

然后,您可以使用Maven的SL4FJ SimpleLogger支持中的任何选项来配置所有记录器或特定记录器。例如,以下是如何在warn级别发出所有警告,但配置为在error登录的PMD除外:

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

有关使用Maven进行日志记录的详细信息,请参阅here

答案 10 :(得分:0)

info文件中将error更改为simplelogging.properties将有助于满足您的要求。

只需更改下面一行的值

org.slf4j.simpleLogger.defaultLogLevel=info 

org.slf4j.simpleLogger.defaultLogLevel=error