Hi,

I would like share a single log configuration for two web-apps that run on the same container. Yet I want each web-app to log in separate files.

I tried different approach the best one is actually very close to some solution I later found on the FAQ : http://logback.qos.ch/faq.html#sharedConfiguration

LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
JoranConfigurator jc = new JoranConfigurator();
jc.setContext(loggerContext);
loggerContext.reset();
loggerContext.setName(appName); // use ${CONTEXT_NAME} in logback.xml
jc.doConfigure(Objects.requireNonNull(source, "Logback configuration is missing"));

However for operation reasons we pass the configuration via the system property logback.configurationFile, so what happens is that the first call to LoggerFactory.getILoggerFactory() initialise the LoggerContext and creates files with non initialised variables.

As I’m using the context name, the file names have default in their name (this is the default value of the context name), if using variable I get a filename with my-var-name_IS_UNDEFINED.

The question is : Is there proper way anyway to avoid this pre-initialisation to avoid creating this empty file ?

I didn’t found any way to hook in the org.slf4j.LoggerFactory or org.slf4j.impl.StaticLoggerBinder (of logback-classic).

— Brice