Aber ich konnte es nicht zum Laufen bringen . Ich denke, das einzige Problem dabei ist, dass Maven die Standardstufe aus der Konfigurationsdatei im Klassenpfad übernimmt. Ich habe auch einige andere Einstellungen über System.properties ausprobiert, aber alle waren nicht erfolgreich.
Blinddarm
Die Quelle von slf4j auf github finden Sie hier: slf4j github
Hast du die simplelogger.propertiesÄnderung zum Laufen gebracht? Wenn ich die org.slf4j.simpleLogger.warnLevelStringEinstellungen mvn compileentsprechend ändere, wird die Einstellung anscheinend ignoriert org.slf4j.simpleLogger.defaultLogLevel. Es protokolliert auch auf der Info-Ebene, selbst wenn ich das auf Warnung oder Fehler eingestellt habe.
Alden
1
@Alden, ich bekomme das gleiche Verhalten. es wird einfach ignoriert.
Jax
18
Für mich stellte sich heraus, dass das Hinzufügen von "-Dorg.slf4j.simpleLogger.defaultLogLevel = info" zum Build-Befehl keine Auswirkungen hat. Wenn ich dies vor dem Build in MAVEN_OPTS wie folgt definiere: exportiere "MAVEN_OPTS = $ MAVEN_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel = debug", dann funktioniert es perfekt, ohne die Datei $ {MAVEN_HOME} /conf/logging/simplelogger.properties zu ändern .
Gábor Lipták
1
Alden, Gábor Lipták: und für mich funktioniert keine der beiden Methoden. :( Ich benutze Maven 3.2.5.
Greg Dubicki
1
Wenn Windows in der Bat-Datei set MAVEN_OPTS =% MAVEN_OPTS% -Dorg.slf4j.simpleLogger.defaultLogLevel = warn
Dies können Sie beispielsweise mit MAVEN_OPTS erreichen MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
Anstatt die Systemeigenschaft direkt in die Befehlszeile einzufügen. (Zumindest für Maven 3.3.1.)
Erwägen Sie die Verwendung ~/.mavenrcfür die Einstellung, MAVEN_OPTSwenn Sie möchten, dass die Protokollierung für Ihre Anmeldung über alle Maven-Aufrufe hinweg geändert wird.
Dies scheint zu funktionieren, da ich die Warn- und Infomeldung deaktivieren konnte, indem ich den Pegel auf Fehler setzte, aber leider wurde auch die reguläre Ausgabe ausgeschaltet. Ich habe tatsächlich versucht, einige Warnungen zu deaktivieren, während das help:evaluateZiel ausgeführt wurde, um den Wert von zu drucken, project.versionund diese Ausgabe (obwohl sie nicht durchzukommen scheint slf4j) wurde ebenfalls deaktiviert .
Haridsv
Die einzige Antwort, die funktioniert, ohne die Installation von Maven dauerhaft zu beeinträchtigen. Ein weiterer Grund, warum Maven ein Dinosaurier im Build-System ist - es unterstützt einfach nicht die Anforderungen des gesunden Menschenverstandes.
Abhijit Sarkar
16
Wenn Sie Logback verwenden, legen Sie diese logback-test.xmlDatei einfach in einem src/test/resourcesVerzeichnis ab:
Diese Antwort lautet ab sofort OBSOLETE - a) Die Repo-URL hat sich geändert, b) der Code enthält keine Anweisung auf INFO-Ebene. C) Die diff-URL funktioniert nicht.
Greg Dubicki
Es spielt keine Rolle, wo der Code INFO verwendet - bei der Entwicklung von Plugins sollte sich Ihr Mojo auf den Maven-Logger verlassen getLog()-, wenn Sie mit der Konfigurierbarkeit leben können.
Adam
1
Der einfachste Weg ist ein Upgrade auf Maven 3.3.1 oder höher, um die ${maven.projectBasedir}/.mvn/jvm.configUnterstützung zu nutzen.
Anschließend können Sie alle Optionen aus der SimpleLogger- Unterstützung von Maven SL4FJ verwenden, um alle Logger oder bestimmte Logger zu konfigurieren. Im Folgenden finden Sie beispielsweise eine Anleitung zum Auslösen aller Warnungen auf warnEbene, mit Ausnahme der PMD, die für die Protokollierung konfiguriert ist error:
Ich habe festgestellt, dass bei Verwendung der Version 2.20.1 des Maven Sunfire-Plugins alle Warnungen in eine Dumpstream-Datei geschrieben werden. z.B/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-mode
oder-q
wirdmvn
weniger ausführlich machen.Antworten:
Beantwortung Ihrer Frage
Ich habe eine kleine Untersuchung durchgeführt, weil ich auch an der Lösung interessiert bin.
Ausführlichkeitsoptionen für die Maven-Befehlszeile
Laut http://books.sonatype.com/mvnref-book/reference/running-sect-options.html#running-sect-verbose-option
Konfigurationsdatei für die Maven-Protokollierung
Derzeit verwendet Maven 3.1.x SLF4J, um sich bei System.out anzumelden. Sie können die Protokollierungseinstellungen in der Datei ändern:
Laut der Seite: http://maven.apache.org/maven-logging.html
Befehlszeilen-Setup
Ich denke, Sie sollten in der Lage sein, die Standardprotokollstufe des einfachen Loggers über einen Befehlszeilenparameter wie folgt einzurichten:
Aber ich konnte es nicht zum Laufen bringen . Ich denke, das einzige Problem dabei ist, dass Maven die Standardstufe aus der Konfigurationsdatei im Klassenpfad übernimmt. Ich habe auch einige andere Einstellungen über System.properties ausprobiert, aber alle waren nicht erfolgreich.
Blinddarm
Die Quelle von slf4j auf github finden Sie hier: slf4j github
Die Quelle des Simpleloggers hier: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java
Der Plexuslader lädt die
simplelogger.properties
.quelle
simplelogger.properties
Änderung zum Laufen gebracht? Wenn ich dieorg.slf4j.simpleLogger.warnLevelString
Einstellungenmvn compile
entsprechend ändere, wird die Einstellung anscheinend ignoriertorg.slf4j.simpleLogger.defaultLogLevel
. Es protokolliert auch auf der Info-Ebene, selbst wenn ich das auf Warnung oder Fehler eingestellt habe.Linux:
oder
Windows:
quelle
mvn validate clean install | findstr /V /B "\[INFO\]" | findstr /V /B "\[WARN\]"
findstr
Regex und andere Optionen unterstützt, die es prägnanter machen könnten - ss64.com/nt/findstr.htmlmvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
Dies können Sie beispielsweise mit MAVEN_OPTS erreichen
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
Anstatt die Systemeigenschaft direkt in die Befehlszeile einzufügen. (Zumindest für Maven 3.3.1.)
Erwägen Sie die Verwendung
~/.mavenrc
für die Einstellung,MAVEN_OPTS
wenn Sie möchten, dass die Protokollierung für Ihre Anmeldung über alle Maven-Aufrufe hinweg geändert wird.quelle
help:evaluate
Ziel ausgeführt wurde, um den Wert von zu drucken,project.version
und diese Ausgabe (obwohl sie nicht durchzukommen scheintslf4j
) wurde ebenfalls deaktiviert .Wenn Sie Logback verwenden, legen Sie diese
logback-test.xml
Datei einfach in einemsrc/test/resources
Verzeichnis ab:quelle
Sie können dies erreichen, indem Sie unten in der Befehlszeile selbst verwenden
z.B :
quelle
Leider ist selbst mit Maven 3 die einzige Möglichkeit, dies zu tun, das Patchen des Quellcodes.
Hier ist eine kurze Anleitung, wie das geht.
Klon oder Gabel Maven 3 Repo: "Git-Klon https://github.com/apache/maven-3.git "
Bearbeiten Sie die Protokollierung org.apache.maven.cli.MavenCli # und ändern Sie sie
zu
In der aktuellen Snapshot-Version befindet es sich in Zeile 270
Führen Sie dann einfach "mvn install" aus. Ihre neue Maven-Distribution befindet sich im Ordner "apache-maven \ target \"
Siehe diesen Unterschied als Referenz: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
quelle
getLog()
-, wenn Sie mit der Konfigurierbarkeit leben können.Der einfachste Weg ist ein Upgrade auf Maven 3.3.1 oder höher, um die
${maven.projectBasedir}/.mvn/jvm.config
Unterstützung zu nutzen.Anschließend können Sie alle Optionen aus der SimpleLogger- Unterstützung von Maven SL4FJ verwenden, um alle Logger oder bestimmte Logger zu konfigurieren. Im Folgenden finden Sie beispielsweise eine Anleitung zum Auslösen aller Warnungen auf
warn
Ebene, mit Ausnahme der PMD, die für die Protokollierung konfiguriert isterror
:Sehen Sie hier , um weitere Informationen mit Maven Anmeldung.
quelle
Durch Ändern der
info
to-error
in-simplelogging.properties
Datei können Sie Ihre Anforderungen erfüllen.Ändern Sie einfach den Wert der folgenden Zeile
zu
quelle
Ich habe festgestellt, dass bei Verwendung der Version 2.20.1 des Maven Sunfire-Plugins alle Warnungen in eine Dumpstream-Datei geschrieben werden. z.B
/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
quelle
Gehen Sie zu
simplelogger.properties
in${MAVEN_HOME}/conf/logging/
und legen Sie die folgenden Eigenschaften fest:Und Vorsicht:
warn
nichtwarning
quelle