Maven-Protokollierungsoptionen

1. Übersicht

In diesem kurzen Tutorial erfahren Sie, wie Sie die Protokollierungsoptionen in Maven konfigurieren.

2. Befehlszeile

Standardmäßig protokolliert Maven nur die Info-, Warn- und Fehlerprotokolle . Bei Fehlern wird nicht die vollständige Stapelverfolgung dieses Protokolls angezeigt. Um die vollständige Stapelverfolgung anzuzeigen , können Sie die Option -e oder –errors verwenden :

$ mvn -e clean compile // truncated cannot find symbol symbol: variable name location: class Compiled at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146) ...

Wie oben gezeigt, zeigt Maven jetzt den vollständigen Fehlerbericht. Es ist auch möglich, Protokolle auf Debug-Ebene über die Option -X oder –debug anzuzeigen :

$ mvn -X clean compile // truncated OS name: "mac os x", version: "10.15.5", arch: "x86_64", family: "mac" [DEBUG] Created new class realm maven.api [DEBUG] Importing foreign packages into class realm maven.api ...

Wenn das Debugging aktiviert ist, ist die Ausgabe sehr ausführlich. Um dem entgegenzuwirken, können wir Maven bitten, keine erwarteten Fehler über die Option -q oder –quiet zu protokollieren :

$ mvn --quiet clean compile

Darüber hinaus können wir das Maven-Protokoll mit der Option -l oder –log-file in eine Datei umleiten :

$ mvn --log-file ./mvn.log clean compile

Anstelle der Standardausgabe befinden sich alle Protokolle in der Datei mvn.log im aktuellen Verzeichnis. Alternativ ist es auch möglich, Betriebssystemfunktionen zu verwenden, um die Maven-Ausgabe in eine Datei umzuleiten:

$ mvn clean compile > ./mvn.log

3. SLF4J-Einstellungen

Derzeit verwendet Maven die SLF4J-API für die Protokollierung in Kombination mit der SLF4J Simple-Implementierung . Um die Protokollierung mit SLF4J Simple zu konfigurieren, können Sie daher die Eigenschaften in der Datei $ {maven.home} /conf/logging/simplelogger.properties bearbeiten . F.

oder Instanz, wenn wir die folgenden Zeilen in diese Datei einfügen:

org.slf4j.simpleLogger.showDateTime=true org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss

dann zeigt Maven die Datums- / Uhrzeitinformationen im obigen Format an.

Versuchen wir es mit einem anderen Build:

$ mvn clean compile 2020-07-08 12:08:07 [INFO] Scanning for projects...

Wir können diese Eigenschaften auch über -D- Argumente über die Befehlszeile übergeben:

$ mvn compile -Dorg.slf4j.simpleLogger.showThreadName=true [main] [INFO] Scanning for projects...

Hier zeigen wir neben anderen Informationen den Thread-Namen an.

Zusätzlich zu den genannten Eigenschaften können wir den einfachen Logger auch mit anderen Eigenschaften konfigurieren:

  • org.slf4j.simpleLogger.logFile verwendet anstelle der Standardausgabe eine Protokolldatei für die Protokollierung
  • org.slf4j.simpleLogger.defaultLogLevel repräsentiert die Standardprotokollstufe. Dies kann Trace , Debug , Info , Warnen , Fehler oder Aus sein - der Standardwert ist info
  • org.slf4j.simpleLogger.showLogName zeigt den SLF4j-Loggernamen an, wenn er wahr ist
  • org.slf4j.simpleLogger.showShortLogName schneidet die langen Loggernamen ab, wenn sie wahr sind

4. Fazit

In diesem kurzen Tutorial haben wir gesehen, wie verschiedene Protokollierungs- und Ausführlichkeitsoptionen in Maven konfiguriert werden.