0

I am using logback 1.2.3. I am passing the logback configuration as -Dlogback.configurationFile=$SERVICE_PATH/restapilayer.logback.xml

My restapilayer.logback.xml looks like below

<configuration debug="true">

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <Target>System.out</Target>
            <encoder>
               <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

In my logs also I am seeing the configuration file being loaded.

10:51:42,695 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [/home/ubuntu/build-target/restapilayer/restapilayer.logback.xml] at [file:/home/ubuntu/build-target/restapilayer/restapilayer.logback.xml]
10:51:42,860 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
10:51:42,863 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
10:51:42,869 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
10:51:42,894 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
10:51:42,895 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
10:51:42,895 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
10:51:42,896 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@3fd7a715 - Registering current configuration as safe fallback point
2018-01-13 10:51:42 [main] INFO  com.vnera.common.utils.CommonUtils - adding uncaught exception handler hook...
INFO [2018-01-13 10:51:44] o.e.j.u.log:[?:?:?] - [main] - Logging initialized @1792ms    

Then while trying to log I am seeing the logback configuration as null and it seems logback is running with default config

INFO [2018-01-12 16:25:34] c.v.r.c.v.r.VneraBackendService:[?:?:?] - [main] - Logback used _null_ as the configuration file_

I am using the below code to get the logback config

logger.debug("Testing Debug logging");
LoggerContext loggerContext = ((ch.qos.logback.classic.Logger)logger).getLoggerContext();
URL mainURL = ConfigurationWatchListUtil.getMainWatchURL(loggerContext);
System.out.println(mainURL);
// or even
logger.info("Logback used '{}' as the configuration file.", mainURL);

Can someone let me know what is going wrong? How can I debug this issue?

Maven dependency tree is added here.

tuk
  • 5,941
  • 14
  • 79
  • 162

1 Answers1

0

I was trying to use logback (with logback.xml) with a dropwizard application. During application initialization whenever io.dropwizard.Application.run(BackendServiceConfiguration, Environment) was getting called it was throwing away the logger previously initialized and trying to use the logger defined in the dropwizard configuration file (config.yaml).

To get around this after the run() I had to call the below code as explained here.

public static void relaodLogback() {
        String loggingConfig = System.getProperty("logback.configurationFile");
        if(loggingConfig == null) {
            System.out.println("Logging Config is null");
        }

        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        loggerContext.reset();
        JoranConfigurator configurator = new JoranConfigurator();

        try {
            InputStream configStream = FileUtils.openInputStream(new File(loggingConfig));
            configurator.setContext(loggerContext);
            configurator.doConfigure(configStream); // loads logback file
            configStream.close();
            System.out.println("Loaded configuration file");
        } catch (JoranException | IOException e) {
            e.printStackTrace();
            System.out.println("Failed to log configuration file");
            System.exit(1);
        }
    }
tuk
  • 5,941
  • 14
  • 79
  • 162