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

UnsupportedCharsetException cp65001 [Question] #5

Open
AndyPook opened this issue Jul 29, 2017 · 5 comments
Open

UnsupportedCharsetException cp65001 [Question] #5

AndyPook opened this issue Jul 29, 2017 · 5 comments

Comments

@AndyPook
Copy link

I've been trying to update the elasticsearch docker file to use es-5.5.1
Unfortunately some change to log4j is tripping over the windows codepage (see below). log4j 2.8.1 should have a fix but I see es-5.5 use 2.8.2.
I've tried many things with both windowscore and nanoserver but to no avail.

I'm hoping that someone will "just know" what the magic incantation might be?

Thanks in advance

2017-07-29 19:36:23,185 main ERROR Unable to inject fields into builder class for plugin type class org.apache.logging.l
og4j.core.appender.ConsoleAppender, element Console. java.nio.charset.UnsupportedCharsetException: cp65001
        at java.nio.charset.Charset.forName(Charset.java:531)
        at org.apache.logging.log4j.util.PropertiesUtil.getCharsetProperty(PropertiesUtil.java:146)
        at org.apache.logging.log4j.util.PropertiesUtil.getCharsetProperty(PropertiesUtil.java:134)
        at org.apache.logging.log4j.core.appender.ConsoleAppender$Target.getCharset(ConsoleAppender.java:85)
        at org.apache.logging.log4j.core.appender.ConsoleAppender$Target$1.getDefaultCharset(ConsoleAppender.java:71)
        at org.apache.logging.log4j.core.appender.ConsoleAppender$Builder.build(ConsoleAppender.java:218)
        at org.apache.logging.log4j.core.appender.ConsoleAppender$Builder.build(ConsoleAppender.java:185)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892
)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884
)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:261)
        at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:166)
        at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:122)
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:316)
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
        at org.elasticsearch.cli.Command.main(Command.java:88)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2017-07-29 19:36:23,200 main ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.appender
.ConsoleAppender for element Console. java.lang.IllegalStateException: No factory method found for class org.apache.logg
ing.log4j.core.appender.ConsoleAppender
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:224)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:130)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892
)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884
)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:261)
        at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:166)
        at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:122)
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:316)
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
        at org.elasticsearch.cli.Command.main(Command.java:88)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2017-07-29 19:36:23,200 main ERROR Null object returned for Console in Appenders.
2017-07-29 19:36:23,200 main ERROR Unable to locate appender "STDOUT" for logger config "root"
@ffosselle
Copy link

I just bumped on the exact same issue.

It seems the codepage returned by CMD is not supported by log4j:
https://issues.apache.org/jira/browse/LOG4J2-1888

This is a different problem than the one described here:
https://stackoverflow.com/questions/42435814/why-is-log4j2-throwing-an-error-in-windows-bash-console
(which is indeed fixed in 2.8.1)

Changing the codepage via chcp doesn't work.

I'm trying now to set the character set via the log4j.properties file.

@ffosselle
Copy link

Adding these two lines to the jvm.options file will do the trick:

Add-Content 'c:\elasticsearch\config\jvm.options' "`n-Dsun.stdout.encoding=UTF-8" ; \
Add-Content 'c:\elasticsearch\config\jvm.options' "`n-Dsun.err.encoding=UTF-8" ; \

@sixeyed
Copy link
Owner

sixeyed commented Jul 31, 2017

Thanks @ffosselle. Can you capture that in the log4j file, or does it need to be in the JVM config?

@AndyPook
Copy link
Author

@ffosselle splendid, thank you. I can confirm that works nicely for me.

Had a closer look at elasticsearch.bat. I can also confirm that adding
ENV ES_JAVA_OPTS="-Dsun.stdout.encoding=UTF-8 -Dsun.err.encoding=UTF-8"
works too.

The contents of the jvm.options file are concatenated into this var. Using the ENV line just gives it an initial value.

Choose which ever method floats your boat :)

@wmdny
Copy link

wmdny commented Feb 2, 2023

666

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

4 participants