Logback к ошибке кодирования Logstash
Я использую Logback для отправки журналов из моего приложения Grails в стек ELK.
Мой аппендик
appender("tcp", LogstashTcpSocketAppender) {
destination = "localhost:5044"
SSLConfiguration aSsl = new SSLConfiguration()
aSsl.trustStore = new KeyStoreFactoryBean()
aSsl.trustStore.location = "classpath:logstashTrustStore.jks"
aSsl.trustStore.password = "test123"
if(aSsl.trustStore instanceof LifeCycle)
aSsl.trustStore.start()
if(aSsl instanceof LifeCycle)
aSsl.start()
ssl = aSsl
encoder(LogstashEncoder) {
encoding = "UTF-8"
}
}
Мой входной конфиг logstash
input {
tcp {
port => 5044
mode => "server"
type => log4j
}
}
Когда я запускаю свое приложение, логи отправляются в стек ELK, но я получаю следующее предупреждение
[2017-01-22T10:57:14,801][WARN ][logstash.codecs.line ] Received an event that has a different character encoding than you configured. {:text=>"\\a\\xDCl\\x86\\xFEڐ\\xD1\\u0006\\x92J\\xBDMTLN\\xBF@\\x93\\x9B\\x8E\\xC1\\xE8&\\xF5|\\xF1\\xF4\\u0000\\u0000:\\xC0#\\xC0'\\u0000<\\xC0%\\xC0)\\u0000g\\u0000@\\xC0\\t\\xC0\\u0013\\u0000/\\xC0\\u0004\\xC0\\u000E\\u00003\\u00002\\xC0+\\xC0/\\u0000\\x9C\\xC0-\\xC01\\u0000\\x9E\\u0000\\xA2\\xC0\\b\\xC0\\u0012\\u0000", :expected_charset=>"UTF-8"}
Журналы, которые я вижу в Kibana, содержат только подобные сообщения, но я не понимаю, откуда могла возникнуть ошибка кодирования, так как я настроил мой обработчик журналов на использование UTF-8, а Logstash, похоже, ожидает UTF-8.
Что я делаю неправильно?
1 ответ
Это потому, что кодировка по умолчанию - UTF-8, и вам может потребоваться установить правильную кодировку в вашем input
что-то вроде этого:
input {
tcp {
port => 5044
mode => "server"
type => log4j
codec => plain {
charset => "ISO-8859-1"
}
}
}
Доступные кодировки. Вы можете взглянуть на этот билет больше. Надеюсь, поможет!