qos-ch / logback

The reliable, generic, fast and flexible logging framework for Java.
http://logback.qos.ch
Other
2.97k stars 1.28k forks source link

Adding -Dlogback.ContextSelector=JNDI does not work for detecting the custom logger context name #781

Open gmiscione opened 6 months ago

gmiscione commented 6 months ago

We are deploying our application with tomcat and we are specifing the custom context name in our web.xml like this:

<!-- name for logback lookup -->
<env-entry>
  <env-entry-name>logback/context-name</env-entry-name>
  <env-entry-type>java.lang.String</env-entry-type>
  <env-entry-value>contextA</env-entry-value>
</env-entry>

With logback 1.2.9, when tomcat is launched with the -Dlogback.ContextSelector=JNDI, the application correctly loads the file logback-contextA.xml and inits the logger with its content. In version 1.3.14, the JNDI lookup is not done. Investigating the issue, we found out that now the code is relying on java services to detect the binding and it's using ch.qos.logback.classic.spi.LogbackServiceProvider to init the logger, but in this class the call to contextSelectorBinder.init(defaultLoggerContext, KEY); is commented, so the context selector binder is not called at all. It seems that the comment has been added in this commit.

Are we missing something there or is it a bug in the service provider not calling the context selector init method?

gmiscione commented 6 months ago

I just saw that there is another identical issue https://github.com/qos-ch/logback/issues/765

lvjing2 commented 5 months ago

We are working on same task like deploy apps into one jvm, would you like to try kouoleless, we can build a modular framework for java eachsystem. how do you think?