vertx LoggerHandler not adding logback

前端 未结 3 1461
执念已碎
执念已碎 2021-01-01 01:35

I am trying to use LoggerHandler to log all incoming requests. I am using logback.xml to specify appenders. I am setting system property for logging.

System         


        
相关标签:
3条回答
  • 2021-01-01 01:41

    I know this question is getting a bit old, but the only way I was able to get the vertx LoggerHandler to not use JUL was to call LoggerFactory.initialise() after setting the system property as described in the question.

    Even better, I set the property in my build.gradle, like so:

    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" ]
    }
    

    And then at the very top of my MainVerticle::start I have:

    LoggerFactory.initialise()
    

    And, boom. Everything is now formatted correctly, including all the startup output.

    0 讨论(0)
  • 2021-01-01 01:58

    I was able to get it to work by setting the VM options as such:

    -Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.Log4jLogDelegateFactory
    

    Then in my log4j.properties, I had to add this:

    log4j.category.io.vertx = TRACE
    
    0 讨论(0)
  • 2021-01-01 02:04

    This worked for me with 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
    

    The key is to get a logger, which I guess initializes the Logging subsystem, the class that you use to get a Logger seems irrelevant as I tried with two different ones.

    I run these lines as the first ones of the program in production code and in the tests to work properly in both contexts.

    0 讨论(0)
提交回复
热议问题