Hello all,

 

I am trying to figure out why logback is not writing to a file. It creates the file okay, but it is not writing anything to it.

 

I have the following programmatic configuration in my java code. This just reads a properties file and sets system properties out of the logback values so they can be read from the configuration.xml file. It also configures the logger from logback_configuration.xml instead of the default logback.xml

 

    private static void initLogback() {

        Map<String,String> logbackProperties = new HashMap<>();

 

        PropertyDeluxe properties = RenoProperties.getProperties();

        for (String key : properties.getKeys())

           if (key.startsWith(RenoProperties.LOGBACK_PROPERTY_PREFIX))

                logbackProperties.put(key,properties.getString(key));

       

        //set system properties out of the logback values so we can reference them from the configuration file

        for (String key : logbackProperties.keySet())

            System.setProperty(key,logbackProperties.get(key));

 

        //configure the logger from the logback_configuration.xml. Default is logback.xml

        LoggerContext lc = new LoggerContext();

        try {

            JoranConfigurator configurator = new JoranConfigurator();

            configurator.setContext(lc);

            lc.reset();

            configurator.doConfigure(properties.getString(RenoProperties.LOGBACK_CONFIG_FILE_PROPERTY));

        } catch (JoranException je) {

            je.printStackTrace();

        }

        StatusPrinter.printInCaseOfErrorsOrWarnings(lc);

    }

 

 

Here are the values defined in the property file. Where base.dir is passed in through the command line as "@@base.dir=C:/project_work/reno"

 

@@scenario.dir = base.dir/scenarios/scenario.name

@@_outputs.dir = scenario.dir/outputs

 

logback.config.file = base.dir/resource/code/java/logback_configuration.xml

logback.file.main = _outputs.dir/logs/java_main.log

logback.level = info

 

 

 

And here is the logback_configuration.xml

 

<configuration scan="true" debug="true">

 

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">

                <file>${logback.file.main}</file>

    <append>true</append>

 

    <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->

    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

      <Pattern>

        %d{HH:mm:ss} [%-30.-30thread] %-5level %-25.25logger{25} - %msg%n

      </Pattern>

    </encoder>

  </appender>

 

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

     <pattern>

        %d{HH:mm:ss} %green([%-5.-5thread]) %-5level %-25.25logger{25} - %msg%n

      </pattern>

    </encoder>

  </appender>

 

  <root level="${logback.level}">

    <appender-ref ref="FILE" />

    <appender-ref ref="STDOUT" />

  </root>

</configuration>

 

 

I’ve looked everywhere and nothing really stands out.  Can anyone see what I’ve missed?

 

Thank you

Chryssa