Log4j2 编码问题

问题描述 投票:0回答:3

当我尝试在 Windows 10 上运行 Elasticsearch,因为主要语言是英语,一切正常。但是,如果我将主要语言更改为土耳其语,则会收到如下错误消息:

2018-07-26 14:42:39,485 main ERROR Unable to locate plugin type for IfFileName
2018-07-26 14:42:39,633 main ERROR Unable to locate plugin for IfAccumulatedFileSize
2018-07-26 14:42:39,634 main ERROR Unable to locate plugin for IfFileName
2018-07-26 14:42:39,637 main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.rolling.action.DeleteAction for element Delete: java.lang.NullPointerException java.lang.NullPointerException
    at org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor.findNamedNode(PluginElementVisitor.java:103)
    at org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor.visit(PluginElementVisitor.java:87)
    at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.generateParameters(PluginBuilder.java:248)
    at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:135)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:958)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:898)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:890)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:890)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:890)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:513)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:237)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:249)
    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:163)
    at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:119)
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:291)
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121)
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112)
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
    at org.elasticsearch.cli.Command.main(Command.java:90)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85)

2018-07-26 14:42:39,645 main ERROR Null object returned for Delete in DefaultRolloverStrategy.

所以这似乎是一个字符集问题。文件编码为

UTF-8
,我用Notepad++查看。 Elasticsearch 有 JVM 选项
-Dfile.encoding=UTF-8
。我仔细检查了 log4j2.properties 文件,
IfFileName
后面没有空格。

如果我将

IfFileName
更改为
ıfFileName
(其中
ı
是土耳其字符 - 较低的 I)错误变为:

2018-07-26 14:54:25,819 main ERROR Unable to locate plugin type for ıfFileName

有人知道如何解决这个问题吗?

elasticsearch character-encoding log4j
3个回答
1
投票

添加

-Duser.language=en
JVM 参数解决了问题。


0
投票

我有同样的问题,但不知道在哪里添加

-Duser.language=en
。但是,我发现它在sonar.properties下,
sonar.search.javaAdditionalOpts=
所在的行删除开头的#并写成
sonar.search.javaAdditionalOpts=-Duser.language=en
并保存文件。


0
投票

这是 Log4j2 中的一个错误,它使用没有语言环境参数的

String#toLowerCase()
:在土耳其语言环境中,
IfFileName
被小写为
ıffilename
(带有无点 i)。我已将此报告为 GH issue #1281

在修复此问题之前,您可以使用所有小写(英文)字母编写插件类型:例如

iffilename
而不是
IfFileName
.

© www.soinside.com 2019 - 2024. All rights reserved.