[slf4j-user] Fwd: SLF4J Warning - Loggers will not work as they were created during initialization phase

Debraj Manna subharaj.manna at gmail.com
Mon Jan 15 20:14:17 CET 2018


---------- Forwarded message ----------
From: Debraj Manna <subharaj.manna at gmail.com>
Date: Tue, Jan 16, 2018 at 12:30 AM
Subject: SLF4J Warning - Loggers will not work as they were created during
initialization phase
To: slf4j-user at qos.ch


Cross-posting from stackoverflow
<https://stackoverflow.com/questions/48268724/slf4j-warning-loggers-will-not-work-as-they-were-created-during-initialization>

I am using slf4j with logback in a dropwizard application. During the
application initialization I am seeing logs like below

SLF4J: The following loggers will not work because they were created
SLF4J: during the default configuration phase of the underlying logging system.
SLF4J: See also http://www.slf4j.org/codes.html#substituteLogger
SLF4J: com.vnera.healthandmetrics.VneraMetrics

I am using logback.xml with my dropwizard application. My code flow looks
like below

public class VneraMetrics {
   private static final Logger logger =
LoggerFactory.getLogger(VneraMetrics.class);
 ...
 // This method is getting called from Service.run() during the
dropwizard application initialization
 public String getSomeValue() {
     // logger is not accessed from this function
     return "Some initialized value";
 }}
public class Service extends Application<Conf> {
   public static final Logger logger = LoggerFactory.getLogger(Service.class);
   public static void main(String args[]) {
      logger.info("Some logs");
      Service service = new Service();
      service.run(dropWizardArgs);
      Utils.reloadLogger();
   }}

Utils.reloadLogger() is loading the loggback configuration as discussed here

public static void reloadLogger() {
        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);
        }
    }}

*Versions*

   - Logback - 1.2.3
   - Dropwizard - 1.0.2

Can some one let me know what does the SLF4J warning denotes? I have seen
the substituteLogger <http://www.slf4j.org/codes.html#substituteLogger> page
but this does not mention how can I get around this? On trying to use
logger in VneraMetrics it is not printing anything.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.qos.ch/pipermail/slf4j-user/attachments/20180116/90034857/attachment-0001.html>


More information about the slf4j-user mailing list