Перейти к основному содержимому

Параметры ведения журнала Maven

· 3 мин. чтения

1. Обзор

В этом кратком руководстве мы увидим, как настроить параметры ведения журнала в Maven.

2. Командная строка

По умолчанию Maven регистрирует только журналы информации, предупреждений и ошибок . Кроме того, для ошибок он не показывает полную трассировку стека этого журнала. Чтобы увидеть полную трассировку стека, мы можем использовать опцию -e или --errors :

$ 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)
...

Как показано выше, теперь Maven показывает полный отчет об ошибке. Также можно просмотреть журналы уровня отладки с помощью опции -X или –debug :

$ 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
...

Когда отладка включена, вывод очень подробный. Чтобы бороться с этим, мы можем попросить Maven не регистрировать ничего, кроме ошибок, с помощью опции -q или –quiet :

$ mvn --quiet clean compile

Более того, мы можем перенаправить журнал Maven в файл с помощью опции -l или --log-file :

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

Вместо стандартного вывода все журналы можно найти в файле mvn.log в текущем каталоге. В качестве альтернативы также можно использовать функции ОС для перенаправления вывода Maven в файл:

$ mvn clean compile > ./mvn.log

3. Настройки SLF4J

В настоящее время Maven использует SLF4J API для логирования в сочетании с реализацией SLF4J Simple . Поэтому, чтобы настроить ведение журнала с помощью SLF4J Simple, мы можем отредактировать свойства в файле ${maven.home}/conf/logging/simplelogger.properties .

Например, если мы добавим в этот файл следующие строки:

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

тогда Maven покажет информацию о дате и времени в указанном выше формате.

Попробуем другую сборку:

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

Мы также можем передать эти свойства через аргументы -D из командной строки:

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

Здесь мы отображаем имя потока в дополнение к другой информации.

В дополнение к упомянутым свойствам мы также можем настроить простой регистратор с другими свойствами :

  • org.slf4j.simpleLogger.logFile использует файл журнала для ведения журнала вместо стандартного вывода
  • org.slf4j.simpleLogger.defaultLogLevel представляет уровень журнала по умолчанию. Это может быть trace , debug , info , warn , error или off — значение по умолчанию — info
  • org.slf4j.simpleLogger.showLogName показывает имя регистратора SLF4j, если оно верно
  • org.slf4j.simpleLogger.showShortLogName усекает длинные имена регистраторов, если это правда

4. Вывод

В этом кратком руководстве мы увидели, как настроить различные параметры ведения журнала и детализации в Maven.