当前位置: 首页 > 知识库问答 >
问题:

试图覆盖vert. x使用的JUL记录器

史超英
2023-03-14

我想使用Log4j2,我正在用系统属性设置MainVerticle,

public class MainVerticle extends AbstractVerticle
{
    static {
        System.setProperty( "vertx.logger-delegate-factory-class-name",
                            "io.vertx.core.logging.Log4j2LogDelegateFactory" );
        System.setProperty( "log4j2.debug", "true" );
    }
....
}

然后我从这个垂直部署了我的HttpVerticle,在HttpVerticle中,我试图使用参数化语句,但这些语句不起作用。因此,我添加了几个日志语句来显示正在使用的logger委托,以及系统属性:

public class HttpServerVerticle extends AbstractVerticle
{
    private static final Logger LOGGER = LoggerFactory.getLogger( HttpServerVerticle.class );

    @Override
    public void start() throws Exception
    {
        LOGGER.info( System.getProperty( "vertx.logger-delegate-factory-class-name" ) );
        LOGGER.info( LOGGER.getDelegate().getClass().getName() );
        ....

下面,在传入消息的处理程序中,我使用的是:

LOGGER.info( "Chat message received: {}" + message.body(), message.body() );

请注意,我使用连接来添加message.body(),以证明消息不是空字符串。

这些日志语句的输出为:

[INFO] Sep 24, 2018 2:46:09 AM ca.LinkEdTutoring.chat.http.HttpServerVerticle
[INFO] INFO: io.vertx.core.logging.Log4j2LogDelegateFactory
[INFO] Sep 24, 2018 2:46:09 AM ca.LinkEdTutoring.chat.http.HttpServerVerticle
[INFO] INFO: io.vertx.core.logging.JULLogDelegate

对于字母“b”的传入消息:

[INFO] INFO: Chat message received: {}b

我试过在pom中设置系统属性。xml文件,并在命令行中使用-D参数。

这是与vert. x 3.5.3

对我忘记做什么有什么想法吗?

================

编辑:从评论线索中捕捉要点。

  1. 无法在垂直中设置系统属性,因为垂直。7月x日记录器在主垂直线之前启动
  2. 无法设置。。。在pom中。使用vertx插件运行代码时使用xml。mvn vertx插件必须在vertx初始化后调用
  3. 覆盖JUL logger的唯一方法似乎是使用-D vargs命令行
  4. 不要忘记varg是在-jar开关之前设置的,即$java-Dx=y-jar jarname。罐子

共有1个答案

慕容耘豪
2023-03-14

如果使用命令行来启动,可以用-Dvertx.logger-委托-工厂-类-名称=io.vertx.core.logging.Log4j2Log委托工厂来配置,这是最简单的。

当然,您也可以通过系统直接在代码中进行设置。setProperty,它与-D设置相同,但必须在LoggerFactory初始化之前完成。显然,Verticle子类中的代码必须在Vertx初始化成功后执行。LoggerFactory已经初始化。

 类似资料:
  • 我找过了,但什么也没找到。我有一个实体类,如下所示: 在application.properties中,我有以下配置: 我们将感谢您的帮助

  • 问题内容: 我使用了tomcat,并简单地覆盖了默认的日志系统。如何在我的Spring应用程序中启用Wildfly上的Logback日志记录? 我在tomcat上的Logback.xml 问题答案: 您可以使用logback来配置应用程序中的日志记录。您不能使用logback为服务器配置日志记录。 要在配置中使用logback,您需要将更改为false或创建一个不包含子系统的。您还需要在部署中包括

  • 我对log4j2比较陌生。当前,我有以下配置文件: 如果我通过静态记录器在这两个类Consoleain和ClientMain中记录一些东西 而且 他们总是使用根记录器的附加器和级别。如果根记录器的级别是“错误”,那么它永远不会显示任何调试级别的日志输出,即使单个记录器的级别是调试。而且,它总是追加到根记录器中指定的日志文件,而不是类的记录器中指定的日志文件。 所以,根记录器似乎以某种方式覆盖了所有

  • 我有helm chart设置,其中应用程序的helm chart被打包并推送到nexus repo考虑 将其添加到helm中,使用 一旦回购被添加,我可以看到图表 需要一些关于如何获得通过文件格式的覆盖值的输入。因为重写值可以是动态的。在一个环境中,它可以是一个变量,在另一个环境中,有10个变量需要被覆盖

  • 我正在尝试使用FFMPEG4Android对视频进行水印。我从这里使用android市场上的应用程序。 使用的命令是