我有將數據發送到logstash一些自定義字段在網絡上logback.groovy:Logback.groovy LogstashEncoder改變字段名
appender("LOGSTASH", LogstashTcpSocketAppender) {
encoder(LogstashEncoder) {
customFields = """{ "token": "xxxxx", "environment":"dev", "some_property":"foobar" }"""
}
remoteHost = "logstashlistener.host.name"
port = 5000
}
到目前爲止好。但是,我需要清理一些對於下游的elasticsearch無效的字段名稱。 基於LogstashEncoder文檔上,這樣就可以實現這樣的:
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<fieldNames>
<timestamp>time</timestamp>
<message>msg</message>
...
</fieldNames>
</encoder>
這似乎是偉大的,但我必須適應的logback.groovy符號此。 我試圖作爲散列表,字符串和更多,但始終以Cannot cast object 'xxxx' with class 'xxxx' to class 'net.logstash.logback.fieldnames.LogstashFieldNames'
有趣的答案。可悲的是,它並不真正奏效。 FieldNames本身不存在。我將它轉換爲LogstashFieldNames並將其修改爲...(這會產生編譯錯誤),但它抱怨說它無法設置該類的timestamp屬性。 –