Logstash StructuredArguments kv 正在以时间戳格式打印 ZonedDateTime 变量
Logstash StructuredArguments kv is printing ZonedDateTime variable in Timestamp format
我正在使用 logstash KV 方法进行日志记录。因为我有一个作为字符串的键和一个作为对象的值。在日志中,对象打印为 JSON,这是正确的。但是 JSON 对象中的一些变量最初是 ZonedDateTime 正在日志中作为时间戳打印。
例如,其中一个变量在日志中打印为:
"createEventDateTime":1540849347.000000000 --> actual
"createEventDateTime":"2018-10-29T21:42:27Z" --> Expected
默认情况下,Jackson 将 ZonedDateTime
字段值写入数值。
要将 Jackson 配置为将它们写入 ISO-8601 兼容字符串,请通过 JsonFactoryDecorator
...
禁用 WRITE_DATES_AS_TIMESTAMPS
序列化功能
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.databind.MappingJsonFactory;
import com.fasterxml.jackson.databind.SerializationFeature;
import net.logstash.logback.decorate.JsonFactoryDecorator;
public class TimestampJsonFactoryDecorator implements JsonFactoryDecorator {
public JsonFactory decorate(JsonFactory factory) {
((MappingJsonFactory) factory).getCodec()
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
return factory;
}
}
然后配置编码器以使用该装饰器...
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<jsonFactoryDecorator class="your.TimestampJsonFactoryDecorator"/>
</encoder>
我正在使用 logstash KV 方法进行日志记录。因为我有一个作为字符串的键和一个作为对象的值。在日志中,对象打印为 JSON,这是正确的。但是 JSON 对象中的一些变量最初是 ZonedDateTime 正在日志中作为时间戳打印。
例如,其中一个变量在日志中打印为:
"createEventDateTime":1540849347.000000000 --> actual
"createEventDateTime":"2018-10-29T21:42:27Z" --> Expected
默认情况下,Jackson 将 ZonedDateTime
字段值写入数值。
要将 Jackson 配置为将它们写入 ISO-8601 兼容字符串,请通过 JsonFactoryDecorator
...
WRITE_DATES_AS_TIMESTAMPS
序列化功能
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.databind.MappingJsonFactory;
import com.fasterxml.jackson.databind.SerializationFeature;
import net.logstash.logback.decorate.JsonFactoryDecorator;
public class TimestampJsonFactoryDecorator implements JsonFactoryDecorator {
public JsonFactory decorate(JsonFactory factory) {
((MappingJsonFactory) factory).getCodec()
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
return factory;
}
}
然后配置编码器以使用该装饰器...
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<jsonFactoryDecorator class="your.TimestampJsonFactoryDecorator"/>
</encoder>