Recentemente estava passando por um problema no log de alguns sistemas, todas as acentuações estavam truncando, dificultando a leitura. Em nosso ambiente estavamos utilizando o Tomcat como servidor de aplicação, e percebemos que o sistema operacional não estava configurado com o charset
UTF-8
, como era um ambiente antigo e a equipe não tinha permissão para altera-lo ou ajustar o SO para o UTF-8, nossa unica opção foi procurar como alterar a aplicação para isso. O Tomcat por default vem configurado para usar o charset
do SO porém o java
nos permite forçar o encoding
do sistema com a seguinte propriedade: file.encoding
; Para altera-la basta editar o arquivo $TOMCAT_HOME/bin/catalina.sh
e adicionar/editar a linha que define as variáveis do CATALINA_OPTS
:
# -----------------------------------------------------------------------------
# Control Script for the CATALINA Server
#
# Environment Variable Prerequisites
#
# Do not set the variables in this script. Instead put them into a script
# setenv.sh in CATALINA_BASE/bin to keep your customizations separate.
#
# [...]
CATALINA_OPTS="-Dfile.encoding=utf-8"
# CATALINA_OPTS (Optional) Java runtime options used when the "start",
# "run" or "debug" command is executed.
# Include here and not in JAVA_OPTS all options, that should
# only be used by Tomcat itself, not by the stop process,
# the version command etc.
# Examples are heap size, GC logging, JMX ports etc.
# [...]
O argumento -Dfile.encoding
também vale para qualquer aplicação java
não necessariamente só no Tomcat, ou seja, também podemos utiliza-la da seguinte maneira:
java -jar MyApp.jar -Dfile.encoding=utf-8
Referências:
https://javarevisited.blogspot.com/2012/01/get-set-default-character-encoding.html
https://support.filecatalyst.com/index.php?/Knowledgebase/Article/View/370/9/forcing-tomcat-to-use-utf-8-character-set-in-linux