By default, Jackson writes ZonedDateTime
field values as a numeric value.
To configure Jackson to write them as an ISO-8601 compatible string, disable the WRITE_DATES_AS_TIMESTAMPS
serialization feature via a JsonFactoryDecorator
...
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;
}
}
Then configure the encoder to use that decorator...
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<jsonFactoryDecorator class="your.TimestampJsonFactoryDecorator"/>
</encoder>
See also Customizing JSON Factory and Generator