Java vertx LoggerHandler未添加回显
我正在尝试使用LoggerHandler记录所有传入的请求。我正在使用logback.xml指定appender。我正在为日志设置系统属性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
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在回答问题时始终添加导入。