Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java vertx LoggerHandler未添加回显_Java_Logging_Slf4j_Vert.x - Fatal编程技术网

Java vertx LoggerHandler未添加回显

Java vertx LoggerHandler未添加回显,java,logging,slf4j,vert.x,Java,Logging,Slf4j,Vert.x,我正在尝试使用LoggerHandler记录所有传入的请求。我正在使用logback.xml指定appender。我正在为日志设置系统属性 System.setProperty("org.vertx.logger-delegate-factory-class-name", "org.vertx.java.core.logging.impl.SLF4JLogDelegateFactory"); 它仍然将所有内容记录在控制台中,而不是记录在文件中。这在我使用Vert.x 3

我正在尝试使用LoggerHandler记录所有传入的请求。我正在使用logback.xml指定appender。我正在为日志设置系统属性

System.setProperty("org.vertx.logger-delegate-factory-class-name",
            "org.vertx.java.core.logging.impl.SLF4JLogDelegateFactory");

它仍然将所有内容记录在控制台中,而不是记录在文件中。

这在我使用Vert.x 3.4.1时起到了作用:

    import static io.vertx.core.logging.LoggerFactory.LOGGER_DELEGATE_FACTORY_CLASS_NAME;
    import io.vertx.core.logging.LoggerFactory;

    // ...

    setProperty (LOGGER_DELEGATE_FACTORY_CLASS_NAME, SLF4JLogDelegateFactory.class.getName ());
    LoggerFactory.getLogger (LoggerFactory.class); // Required for Logback to work in Vertx
关键是获取一个记录器,我想它初始化了日志子系统,用于获取记录器的类似乎与我尝试使用的两个不同的类无关


我在生产代码和测试中将这些行作为程序的第一行运行,以便在这两种情况下都能正常工作。

我能够通过如下设置VM选项使其正常工作:

-Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.Log4jLogDelegateFactory
然后在我的log4j.properties中,我必须添加以下内容:

log4j.category.io.vertx = TRACE

我知道这个问题已经有点过时了,但是我能够让vertx
LoggerHandler
不使用JUL的唯一方法是在设置问题中描述的系统属性后调用
LoggerFactory.initialise()

更好的是,我在build.gradle中设置了属性,如下所示:

run {
  systemProperty(
    "vertx.logger-delegate-factory-class-name",
    "io.vertx.core.logging.SLF4JLogDelegateFactory"
  )
  args = ['run', mainVerticleName, "--redeploy=$watchForChange", "--launcher-class=$mainClassName", "--on-redeploy=$doOnChange",
          "-Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.SLF4JLogDelegateFactory" ]
}
然后在我的
MainVerticle::start的最顶端,我有:

LoggerFactory.initialise()

然后,砰的一声。现在所有内容都已正确格式化,包括所有启动输出。

请参阅vert.x在回答问题时始终添加导入。