跳到主要内容

13. 日志

Micronaut 使用 Slf4j 来记录信息。通过 Micronaut Launch 创建的应用程序的默认实现是 Logback。但也支持任何其他 Slf4j 实现。

13.1 日志消息

要记录消息,使用 Slf4j LoggerFactory 为你的类获取一个记录器。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LoggerExample {

private static Logger logger = LoggerFactory.getLogger(LoggerExample.class);

public static void main(String[] args) {
logger.debug("Debug message");
logger.info("Info message");
logger.error("Error message");
}
}

13.2 配置

日志级别可通过配置文件(如 application.yml)(以及环境变量)中定义的带有 logger.levels 前缀的属性进行配置:

logger.levels.foo.bar=ERROR

通过设置环境变量 LOGGER_LEVELS_FOO_BAR,可以实现相同的配置。请注意,目前还无法为 foo.barBaz 等非常规前缀设置日志级别。

自定义日志回溯 XML 配置

logger.config=custom-logback.xml

你还可以通过 logger.config 设置要使用的自定义 Logback XML 配置文件。请注意,引用的文件应是类路径上可访问的资源!

使用属性禁用记录器

要禁用记录器,需要将记录器级别设置为 OFF

logger.levels.io.verbose.logger.who.CriedWolf=false
  • 这将禁用类 io.verbose.logger.who.CriedWolf 的所有日志记录。

请注意,通过配置控制日志级别的功能是通过 LoggingSystem 接口控制的。目前,Micronaut 只包含一个允许为 Logback 库设置日志级别的实现。如果你使用其他库,你应该提供一个实现此接口的 bean。

13.3 Logback

要使用 logback 库,请在构建过程中添加以下依赖。

implementation("ch.qos.logback:logback-classic")
注意

Logback 1.3.x+ 包含一个破坏性的二进制更改,可能会妨碍其与 Micronaut 框架 3.8.x 的配合使用。如果你正在使用 Logback 1.3.x+ 并遇到问题,请降级到 Logback 1.2.x。

如果还不存在,请在 resources 文件夹中放置 logback.xml 文件,并根据需要修改文件内容。例如:

src/main/resources/logback.xml

<configuration>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<withJansi>true</withJansi>

<encoder>
<pattern>%cyan(%d{HH:mm:ss.SSS}) %gray([%thread]) %highlight(%-5level) %magenta(%logger{36}) - %msg%n
</pattern>
</encoder>
</appender>

<root level="info">
<appender-ref ref="STDOUT"/>
</root>

</configuration>

要更改特定类或软件包名称的日志级别,可以在配置部分添加这样的日志记录器条目:

<configuration>
...
<logger name="io.micronaut.context" level="TRACE"/>
...
</configuration>

13.4 日志系统

Micronaut 框架有一个日志系统的概念。简而言之,这是一个简单的应用程序接口,用于在运行时设置日志执行中的日志级别。为 Logback 和 Log4j2 提供了默认实现。你可以创建自己的 LoggingSystem 实现,并使用 @Replaces 注解替换正在使用的实现,从而重写日志系统的行为。

英文链接