如何防止Vertx自动写入日志?

时间:2018-06-04 12:41:20

标签: java logging vert.x

使用 Vertx 启动我的TCP服务器时,我有以下输出:

[2018-06-04 12:15:45] [FINEST ] Net server listening on 0.0.0.0:/0:0:0:0:0:0:0:0:8600
[2018-06-04 12:15:45] [INFO   ] Server is now listening on port :  8600

我被期待第二行,因为我告诉Vertx写它:

    server.listen(res -> {
        if (res.succeeded()) {
            logger.info("Server is now listening on port : {0, number, #}", server.actualPort());
        }
        else {
            logger.error("Server failed to bind");
        }
    });

第一行虽然是由Vertx本身编写的。我有点惊讶,因为我无法在Vertx文档中看到这种情况发生,也不知道如何阻止它这样做。

如何让Vertx自动停止记录?

提前致谢。

1 个答案:

答案 0 :(得分:1)

嗯,the manual表示vert.x默认使用java.util.logging,通常由其昵称JUL引用。它是configurable所以根据您的使用情况,您应该能够调整日志输出。或者可以指示vert.x使用an external logging framework,它们各有各的优缺点。

JUL的文档实际上并不是最有用的散文,幸运的是有很多第三方网站覆盖了这个主题,比如http://tutorials.jenkov.com/java-logging/index.html,但快速的谷歌也会指向很多其他网站。

恢复:

  • 您需要编写一个logging.properties文件,该文件反映您想要获取的输出,以及(在日志文件和/或控制台上)
  • 您必须通过系统属性java.util.logging.config.file
  • 将该文件传递给vert.x应用程序

可以使用JUL中提供的过滤功能来限制某些应用程序部件生成的信息。因此,例如,在您的logging.properties中,您可以放置​​

java.util.logging.FileHandler.level=INFO

将限制日志文件到INFO或更高版本的日志记录。例如,这已经取消了您在示例中看到的vert.x日志。您还可以限制每个包,一组包甚至单个类的日志记录。有关这些可能性的精彩文章可以在这里找到:java.util.logging: how to set level by logger package (or prefix)?。我认为vert.x使用前缀io.vertx