如何设置io.vertx.core.logging.Logger指定类的日志级别并输出到System.out
针对Vert.x自定义类的独立日志配置方案
Vert.x 的LoggerFactory为日志门面,具体配置依赖你引入的底层日志实现,以下两种常用方案均可满足**仅指定自定义类生效、自定义日志级别、日志输出到System.out**的需求。
方案1:使用Vert.x默认的JUL(java.util.logging)实现
无需额外引入日志依赖,直接按以下步骤配置:
- 在项目
resources目录下新建logging.properties配置文件,内容如下:
# 全局默认日志级别设为WARN,非指定类仅输出WARN及以上级别日志 .level=WARN # 单独为目标自定义类设置日志级别,按需调整为TRACE/DEBUG/INFO/ERROR均可 mypackageroot.algorithms.Myclass.level=TRACE # 配置控制台处理器输出到System.out handlers=java.util.logging.ConsoleHandler java.util.logging.ConsoleHandler.level=ALL java.util.logging.ConsoleHandler.stream=System.out java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
- 启动项目时添加JVM参数加载配置:
-Djava.util.logging.config.file=src/main/resources/logging.properties
也可以在应用启动代码最前端主动加载配置:
import java.io.FileInputStream; import java.util.logging.LogManager; // 启动类最开始执行 LogManager.getLogManager().readConfiguration(new FileInputStream("path/to/logging.properties"));
方案2:使用Log4j2作为底层日志实现
适用于已经接入Log4j2的项目,配置更灵活:
- 确保已引入Log4j2核心依赖与Vert.x日志适配依赖
- 在
resources目录下新建log4j2.xml配置文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <!-- 配置控制台输出,目标指定为SYSTEM_OUT --> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <!-- 全局根日志配置,默认级别WARN --> <Root level="WARN"> <AppenderRef ref="Console"/> </Root> <!-- 单独为目标自定义类配置日志,additivity设为false避免继承父级配置,确保仅对该类生效 --> <Logger name="mypackageroot.algorithms.Myclass" level="trace" additivity="false"> <AppenderRef ref="Console"/> </Logger> </Loggers> </Configuration>
配置完成后运行你示例代码中的ping()方法,即可看到ping trace和ping errorLevel都输出到控制台,其他类的日志不受该配置影响,仅输出默认级别及以上的内容。
内容的提问来源于stack exchange,提问作者ntg
相关产品推荐
相关产品推荐

