Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NPE in logback-core on startup if given invalid file.encoding #777

Open
kriss-s opened this issue Feb 5, 2024 · 0 comments
Open

NPE in logback-core on startup if given invalid file.encoding #777

kriss-s opened this issue Feb 5, 2024 · 0 comments

Comments

@kriss-s
Copy link

kriss-s commented Feb 5, 2024

If one sets file.encoding to an unsupported encoding string (for example ISO-8859 missing the last qualifier ISO-8859-1) logback fails to start with an unhelpful java.lang.NullPointerException.

The encoding exception is swallowed in the deprecated URLDecoder.decode(String) used below in logback-core.

https://github.com/qos-ch/logback/blob/9078f68f49673d2163ebbaa075ec4018a6d12e54/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ConfigurationWatchList.java#L97C40-L97C46

There is a fix in openjdk 22+18 that would resolve this however, but it's a bit nasty untill one can update. So for all java (8, 22+17] there is this NPE.

https://bugs.openjdk.org/browse/JDK-8317246

Failed to instantiate [ch.qos.logback.classic.LoggerContext]
Reported exception:
java.lang.NullPointerException
     at java.base/java.io.File.<init>(File.java:278)
     at ch.qos.logback.core.joran.spi.ConfigurationWatchList.convertToFile(ConfigurationWatchList.java:95)
     at ch.qos.logback.core.joran.spi.ConfigurationWatchList.addAsFileToWatch(ConfigurationWatchList.java:59)
     at ch.qos.logback.core.joran.spi.ConfigurationWatchList.setMainURL(ConfigurationWatchList.java:55)
     at ch.qos.logback.core.joran.util.ConfigurationWatchListUtil.setMainWatchURL(ConfigurationWatchListUtil.java:50)
     at ch.qos.logback.core.joran.GenericConfigurator.informContextOfURLUsedForConfiguration(GenericConfigurator.java:100)
     at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:46)
     at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
     at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)
     at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)
     at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
     at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
     at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
     at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
     at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addStatus(StatusViaSLF4JLoggerFactory.java:32)
     at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo(StatusViaSLF4JLoggerFactory.java:20)
     at ch.qos.logback.classic.servlet.LogbackServletContainerInitializer.onStartup(LogbackServletContainerInitializer.java:32)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant