1. 概述
在本快速教程中,我们将了解如何在Maven中配置日志记录选项。
2. 命令行
默认情况下,Maven只记录info、warning和error日志。此外,对于error,它不会显示该日志的完整堆栈跟踪。为了查看完整的堆栈跟踪,我们可以使用-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选项查看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
...
当debug打开时,输出非常冗长。为了解决这个问题,我们可以通过-q或–quiet选项要求Maven不记录任何预期错误:
$ mvn --quiet clean compile
此外,我们可以使用-l或–log-file选项将Maven日志重定向到一个文件:
$ 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
2023-01-03 18: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记录器名称(如果为true)
- org.slf4j.simpleLogger.showShortLogName如果为true,则会截断长记录器名称
4. 总结
在这个简短的教程中,我们了解了如何在Maven中配置不同的日志记录和详细信息选项。
与往常一样,本教程的完整源代码可在GitHub上获得。
Show Disqus Comments
Post Directory
扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章