Pero no pude hacerlo funcionar . Supongo que el único problema con esto es que Maven recoge el nivel predeterminado del archivo de configuración en el classpath. También probé algunas otras configuraciones a través de System.properties, pero todas no tuvieron éxito.
Apéndice
Puede encontrar la fuente de slf4j en github aquí: slf4j github
¿Funcionó el simplelogger.propertiescambio? Cuando cambio la org.slf4j.simpleLogger.warnLevelStringconfiguración, se mvn compileactualiza de manera adecuada, pero parece estar ignorando la org.slf4j.simpleLogger.defaultLogLevelconfiguración. También se registra en el nivel de información, incluso cuando configuro eso para advertir o error.
Alden
1
@Alden, estoy teniendo el mismo comportamiento. Es simplemente ignorado.
jax
18
Para mí resultó que agregar "-Dorg.slf4j.simpleLogger.defaultLogLevel = info" al comando de compilación no tiene ningún efecto. Si defino esto antes de la compilación en MAVEN_OPTS de esta manera: exporta "MAVEN_OPTS = $ MAVEN_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel = debug", entonces funciona perfectamente sin cambiar el archivo $ {MAVEN_HOME} /conf/logging/simplelogger.properties. .
Gábor Lipták
1
Alden, Gábor Lipták: y para mí ninguno de los dos métodos funciona. :( Estoy usando Maven 3.2.5.
Greg Dubicki
1
si windows, en el archivo bat, use set MAVEN_OPTS =% MAVEN_OPTS% -Dorg.slf4j.simpleLogger.defaultLogLevel = warn
Esto parece funcionar, ya que podría desactivar el mensaje de advertencia e información al establecer el nivel en error, pero desafortunadamente también apagó la salida normal. En realidad estaba tratando de deshabilitar algunas advertencias mientras ejecutaba el help:evaluateobjetivo para imprimir el valor de project.versiony esta salida (aunque no parece llegar slf4j) también se apagó.
haridsv
La única respuesta que funciona sin alterar permanentemente la instalación de Maven. Otra razón por la que Maven es un dinosaurio entre el sistema de construcción, simplemente no tiene soporte para los requisitos de sentido común.
Abhijit Sarkar
16
Si está utilizando Logback, simplemente coloque este logback-test.xmlarchivo en el src/test/resourcesdirectorio:
Esta respuesta es OBSOLETO a partir de ahora: a) la URL del repositorio ha cambiado, b) no hay una declaración de nivel INFO en este código, c) la URL diff no funciona.
Greg Dubicki
No importa dónde use el código INFO: al desarrollar complementos, su mojo debe confiar en el registrador maven con getLog(), si puede vivir con la capacidad de configuración.
Adam
1
La forma más sencilla es actualizar a Maven 3.3.1 o superior para aprovechar el ${maven.projectBasedir}/.mvn/jvm.configsoporte.
Luego puede usar cualquier opción del soporte SimpleLogger de Maven's SL4FJ para configurar todos los registradores o registradores particulares. Por ejemplo, aquí hay una forma de hacer todas las advertencias a warnnivel, excepto un PMD que está configurado para iniciar sesión en error:
He notado que cuando uso la versión 2.20.1 del complemento maven sunfire , todas las advertencias se escriben en un archivo dumpstream. p.ej/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-modeo-qharámvnmenos detallado.Respuestas:
Respondiendo tu pregunta
Hice una pequeña investigación porque también estoy interesado en la solución.
Opciones de verbosidad de línea de comandos de Maven
De acuerdo con http://books.sonatype.com/mvnref-book/reference/running-sect-options.html#running-sect-verbose-option
Archivo de configuración de registro de Maven
Actualmente, Maven 3.1.x utiliza SLF4J para iniciar sesión en System.out. Puede modificar la configuración de registro en el archivo:
De acuerdo con la página: http://maven.apache.org/maven-logging.html
Configuración de línea de comando
Creo que debería poder configurar el nivel de registro predeterminado del registrador simple a través de un parámetro de línea de comando, como este:
Pero no pude hacerlo funcionar . Supongo que el único problema con esto es que Maven recoge el nivel predeterminado del archivo de configuración en el classpath. También probé algunas otras configuraciones a través de System.properties, pero todas no tuvieron éxito.
Apéndice
Puede encontrar la fuente de slf4j en github aquí: slf4j github
La fuente del simplelogger aquí: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java
El cargador de plexo carga el
simplelogger.properties.fuente
simplelogger.propertiescambio? Cuando cambio laorg.slf4j.simpleLogger.warnLevelStringconfiguración, semvn compileactualiza de manera adecuada, pero parece estar ignorando laorg.slf4j.simpleLogger.defaultLogLevelconfiguración. También se registra en el nivel de información, incluso cuando configuro eso para advertir o error.Linux:
o
Ventanas:
fuente
mvn validate clean install | findstr /V /B "\[INFO\]" | findstr /V /B "\[WARN\]"findstradmite expresiones regulares y otras opciones que podrían hacerlo más concisomvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"Puede lograr esto con MAVEN_OPTS, por ejemplo
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn cleanEn lugar de poner la propiedad del sistema directamente en la línea de comando. (Al menos para maven 3.3.1.)
Considere usar
~/.mavenrcpara configurarMAVEN_OPTSsi desea cambiar el registro para su inicio de sesión en todas las invocaciones de Maven.fuente
help:evaluateobjetivo para imprimir el valor deproject.versiony esta salida (aunque no parece llegarslf4j) también se apagó.Si está utilizando Logback, simplemente coloque este
logback-test.xmlarchivo en elsrc/test/resourcesdirectorio:fuente
puede lograr esto usando a continuación en la línea de comandos en sí
p.ej :
fuente
Desafortunadamente, incluso con Maven 3, la única forma de hacerlo es parchear el código fuente.
Aquí hay instrucciones breves sobre cómo hacerlo.
Clon o tenedor Maven 3 repo: "git clone https://github.com/apache/maven-3.git "
Edite el registro de org.apache.maven.cli.MavenCli # y cambie
a
En la versión actual de la instantánea, está en la línea 270
Luego, simplemente ejecute "mvn install", su nueva distribución de maven se ubicará en la carpeta "apache-maven \ target \"
Vea este diff para la referencia: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
fuente
getLog(), si puede vivir con la capacidad de configuración.La forma más sencilla es actualizar a Maven 3.3.1 o superior para aprovechar el
${maven.projectBasedir}/.mvn/jvm.configsoporte.Luego puede usar cualquier opción del soporte SimpleLogger de Maven's SL4FJ para configurar todos los registradores o registradores particulares. Por ejemplo, aquí hay una forma de hacer todas las advertencias a
warnnivel, excepto un PMD que está configurado para iniciar sesión enerror:Consulte aquí para obtener más detalles sobre cómo iniciar sesión con Maven.
fuente
Cambiar el archivo
infoaerrorensimplelogging.propertiesle ayudará a cumplir sus requisitos.Simplemente cambie el valor de la línea de abajo
a
fuente
He notado que cuando uso la versión 2.20.1 del complemento maven sunfire , todas las advertencias se escriben en un archivo dumpstream. p.ej
/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstreamfuente
Vaya a
simplelogger.propertiesin${MAVEN_HOME}/conf/logging/y configure las siguientes propiedades:Y cuidado:
warnnowarningfuente