代码之家  ›  专栏  ›  技术社区  ›  souki

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

  •  0
  • souki  · 技术社区  · 6 年前

    当使用 维特克斯 ,我有以下输出:

    [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 回复  |  直到 6 年前
        1
  •  1
  •   fvu    6 年前

    好, 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文件,该文件反映您想要获得的输出,以及在何处(在logfiles和/或控制台上)
    • 必须通过系统属性将该文件传递给vert.x应用程序 java.util.logging.config.file

    限制某些应用程序部分生成的信息可以通过使用Jul中提供的筛选功能来完成。例如,在logging.properties中,可以将

    java.util.logging.FileHandler.level=INFO
    

    这将限制到日志文件的日志信息或更高。例如,这样的例子已经消除了您在示例中看到的vert.x日志。您还可以限制每个包、包组甚至单个类的日志记录。以下是这些可能性的详细描述: java.util.logging: how to set level by logger package (or prefix)? . 我认为vert.x使用前缀 io.vertx