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.