我有一个 logback.groovy,它使用一些自定义字段将数据发送到网络上的 logstash:
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'