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-mode
o-q
harámvn
menos 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.properties
cambio? Cuando cambio laorg.slf4j.simpleLogger.warnLevelString
configuración, semvn compile
actualiza de manera adecuada, pero parece estar ignorando laorg.slf4j.simpleLogger.defaultLogLevel
configuració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\]"
findstr
admite 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 clean
En lugar de poner la propiedad del sistema directamente en la línea de comando. (Al menos para maven 3.3.1.)
Considere usar
~/.mavenrc
para configurarMAVEN_OPTS
si desea cambiar el registro para su inicio de sesión en todas las invocaciones de Maven.fuente
help:evaluate
objetivo para imprimir el valor deproject.version
y esta salida (aunque no parece llegarslf4j
) también se apagó.Si está utilizando Logback, simplemente coloque este
logback-test.xml
archivo en elsrc/test/resources
directorio: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.config
soporte.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
warn
nivel, 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
info
aerror
ensimplelogging.properties
le 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.dumpstream
fuente
Vaya a
simplelogger.properties
in${MAVEN_HOME}/conf/logging/
y configure las siguientes propiedades:Y cuidado:
warn
nowarning
fuente