Je pense que vous devriez pouvoir configurer le niveau de journal par défaut de l'enregistreur simple via un paramètre de ligne de commande, comme ceci:
Mais je n'ai pas pu le faire fonctionner . Je suppose que le seul problème avec cela est que maven récupère le niveau par défaut du fichier de configuration sur le chemin de classe. J'ai également essayé quelques autres paramètres via System.properties, mais ils ont tous échoué.
appendice
Vous pouvez trouver la source de slf4j sur github ici: slf4j github
avez-vous fait fonctionner le simplelogger.propertieschangement? Lorsque je modifie le org.slf4j.simpleLogger.warnLevelStringparamètre mvn compile, il se met à jour de manière appropriée, mais il semble ignorer le org.slf4j.simpleLogger.defaultLogLevelparamètre. Il enregistre également au niveau des informations, même lorsque je le définis sur avertissement ou erreur.
Alden
1
@Alden, j'ai le même comportement. il est simplement ignoré.
jax
18
Pour moi, il s'est avéré que l'ajout de "-Dorg.slf4j.simpleLogger.defaultLogLevel = info" à la commande de construction n'a aucun effet. Si je définis ceci avant la construction dans MAVEN_OPTS comme ceci: export "MAVEN_OPTS = $ MAVEN_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel = debug", alors cela fonctionne parfaitement sans changer le fichier $ {MAVEN_HOME} /conf/logging/simplelogger.properties .
Gábor Lipták
1
Alden, Gábor Lipták: et pour moi, aucune des deux méthodes ne fonctionne. :( J'utilise Maven 3.2.5.
Greg Dubicki
1
si windows, dans le fichier bat, utilisez set MAVEN_OPTS =% MAVEN_OPTS% -Dorg.slf4j.simpleLogger.defaultLogLevel = warn
Vous pouvez y parvenir avec MAVEN_OPTS, par exemple MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
Plutôt que de mettre la propriété système directement sur la ligne de commande. (Au moins pour maven 3.3.1.)
Pensez à utiliser ~/.mavenrcpour le paramètre MAVEN_OPTSsi vous souhaitez modifier la journalisation de votre connexion à travers toutes les invocations maven.
Cela semble fonctionner car je pourrais désactiver le message d'avertissement et d'information en définissant le niveau sur erreur, mais malheureusement, cela a également désactivé la sortie normale. J'essayais en fait de désactiver certains avertissements lors de l'exécution de help:evaluatetarget pour imprimer la valeur de project.versionet cette sortie (même si elle ne semble pas passer slf4j) a également été désactivée.
haridsv
La seule réponse qui fonctionne sans perturber définitivement l'installation de Maven. Une autre raison pour laquelle Maven est un dinosaure parmi le système de construction - il ne prend tout simplement pas en charge les exigences de bon sens.
Abhijit Sarkar
16
Si vous utilisez Logback, placez simplement ce logback-test.xmlfichier dans le src/test/resourcesrépertoire:
Cette réponse est OBSOLETE à partir de maintenant - a) l'URL du dépôt a changé, b) il n'y a pas de déclaration de niveau INFO dans ce code, c) l'URL diff ne fonctionne pas.
Greg Dubicki
Peu importe où le code utilise INFO - lors du développement de plugins, votre mojo devrait s'appuyer sur le maven logger avec getLog()- si vous pouvez vivre avec la configurabilité.
Adam
1
Le moyen le plus simple est de passer à Maven 3.3.1 ou supérieur pour profiter du ${maven.projectBasedir}/.mvn/jvm.configsupport.
Ensuite, vous pouvez utiliser toutes les options du support SimpleLogger de SL4FJ de Maven pour configurer tous les enregistreurs ou enregistreurs particuliers. Par exemple, voici comment faire tous les avertissements au warnniveau, sauf pour un PMD qui est configuré pour se connecter à error:
J'ai remarqué que lors de l'utilisation de la version 2.20.1 du plugin maven sunfire , tous les avertissements sont écrits dans un fichier de vidage. par exemple/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-mode
ou-q
rendramvn
moins verbeux.Réponses:
Répondre à votre question
J'ai fait une petite enquête car je suis également intéressé par la solution.
Options de verbosité de la ligne de commande Maven
Selon http://books.sonatype.com/mvnref-book/reference/running-sect-options.html#running-sect-verbose-option
Fichier de configuration de journalisation Maven
Actuellement, maven 3.1.x utilise SLF4J pour se connecter à System.out. Vous pouvez modifier les paramètres de journalisation dans le fichier:
Selon la page: http://maven.apache.org/maven-logging.html
Configuration de la ligne de commande
Je pense que vous devriez pouvoir configurer le niveau de journal par défaut de l'enregistreur simple via un paramètre de ligne de commande, comme ceci:
Mais je n'ai pas pu le faire fonctionner . Je suppose que le seul problème avec cela est que maven récupère le niveau par défaut du fichier de configuration sur le chemin de classe. J'ai également essayé quelques autres paramètres via System.properties, mais ils ont tous échoué.
appendice
Vous pouvez trouver la source de slf4j sur github ici: slf4j github
La source du simplelogger ici: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java
Le chargeur plexus charge le fichier
simplelogger.properties
.la source
simplelogger.properties
changement? Lorsque je modifie leorg.slf4j.simpleLogger.warnLevelString
paramètremvn compile
, il se met à jour de manière appropriée, mais il semble ignorer leorg.slf4j.simpleLogger.defaultLogLevel
paramètre. Il enregistre également au niveau des informations, même lorsque je le définis sur avertissement ou erreur.Linux:
ou
Les fenêtres:
la source
mvn validate clean install | findstr /V /B "\[INFO\]" | findstr /V /B "\[WARN\]"
findstr
prend en charge les regex et d'autres options qui pourraient le rendre plus succinct - ss64.com/nt/findstr.htmlmvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
Vous pouvez y parvenir avec MAVEN_OPTS, par exemple
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
Plutôt que de mettre la propriété système directement sur la ligne de commande. (Au moins pour maven 3.3.1.)
Pensez à utiliser
~/.mavenrc
pour le paramètreMAVEN_OPTS
si vous souhaitez modifier la journalisation de votre connexion à travers toutes les invocations maven.la source
help:evaluate
target pour imprimer la valeur deproject.version
et cette sortie (même si elle ne semble pas passerslf4j
) a également été désactivée.Si vous utilisez Logback, placez simplement ce
logback-test.xml
fichier dans lesrc/test/resources
répertoire:la source
vous pouvez y parvenir en utilisant ci-dessous dans la ligne de commande elle-même
par exemple :
la source
Malheureusement, même avec maven 3, le seul moyen de le faire est de patcher le code source.
Voici de brèves instructions pour y parvenir.
Cloner ou fourcher le dépôt Maven 3: "git clone https://github.com/apache/maven-3.git "
Modifier la journalisation org.apache.maven.cli.MavenCli # et modifier
à
Dans la version actuelle de l'instantané, c'est à la ligne 270
Ensuite, lancez simplement "mvn install", votre nouvelle distribution maven sera située dans le dossier "apache-maven \ target \"
Voir ce diff pour la référence: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
la source
getLog()
- si vous pouvez vivre avec la configurabilité.Le moyen le plus simple est de passer à Maven 3.3.1 ou supérieur pour profiter du
${maven.projectBasedir}/.mvn/jvm.config
support.Ensuite, vous pouvez utiliser toutes les options du support SimpleLogger de SL4FJ de Maven pour configurer tous les enregistreurs ou enregistreurs particuliers. Par exemple, voici comment faire tous les avertissements au
warn
niveau, sauf pour un PMD qui est configuré pour se connecter àerror
:Voir ici pour plus de détails sur la journalisation avec Maven.
la source
Changer le fichier
info
verserror
in voussimplelogging.properties
aidera à répondre à vos besoins.Changez simplement la valeur de la ligne ci-dessous
à
la source
J'ai remarqué que lors de l'utilisation de la version 2.20.1 du plugin maven sunfire , tous les avertissements sont écrits dans un fichier de vidage. par exemple
/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
la source
Aller à
simplelogger.properties
dans${MAVEN_HOME}/conf/logging/
et définissez les propriétés suivantes:Et méfiez-vous:
warn
nonwarning
la source