Eu tenho uma VM regular do servidor Ubuntu 16.04. Minha localidade está configurada para utf-8 em todos os lugares:
$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Meu aplicativo está configurado para registrar ambos em seus próprios arquivos e na saída padrão, que é consumida no systemd-journald (todo o padrão). Mas quando a saída do meu aplicativo não é ASCII, o journalctl parece truncar para ASCII:
$ journalctl -u some.app --since "5 minutes ago"
Dec 01 14:37:57 some.hostname java[7037]: 2017-12-01 14:37:57.457 +0000 INFO :
controllers.Users - Updating user: {"????":"???????","???????_???????_?????":"1","???????_???????_????_??????":"2","???????_???????_?????":"3"}
enquanto os logs do aplicativo e a saída que canalizei para um arquivo ao iniciar o aplicativo manualmente, contêm a saída codificada correta do UTF-8.
O que estou fazendo de errado? Por que journalctl parece produzir em ASCII?