Java
CentOS
文字化け
log4j
centos7

Log4jの出力がハテナになってしまう問題@CentOS7

Log4jでログ出力しているバッチを叩いたら下記みたいな感じになった。
新しい環境なのでまぁ色々設定もれてるんかなと思い、解決するまでの備忘録
Log4jまわりでほんのり検索してもパッと出てこなかったので書いておく

[test]$ java -jar test.jar
2018/10/17 08:48:53.402 [main] INFO   ??????????

文字コード

端末(putty)の文字コード、と開発している環境の文字コードを一応調査した。
問題なくUTF-8(CJK)で統一されていた

ロケール

ハテナで出るときはだいたいここがおかしい。
CentOS7はlocalectlがあるので確認が楽なのがよいね。ということでぽち

[test]$ localectl
   System Locale: LANG=C
       VC Keymap: jp106
      X11 Layout: jp

System LocaleがCになってるのが怪しい。
ja_JPに変えたいので変更できるロケール一覧を表示する。grepにはiオプション付けたほうがいいかも

[test]$ localectl list-locales | grep ja
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

ja_JP.utf8があったので設定変更する。
ユーザー権限で叩いたら怒られたのでsudoかrootにスイッチするかしてくれ。

[test]$ localectl set-locale LANG=ja_JP.utf8
==== AUTHENTICATING FOR org.freedesktop.locale1.set-locale ===
Authentication is required to set the system locale.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===

sudo権限なしのパスワード認証ザルサーバーなのでパスワードぽちぽちして設定変更完了。確認

[test]$ localectl
   System Locale: LANG=ja_JP.utf8
       VC Keymap: jp106
      X11 Layout: jp

よしよし、これでいけるだろ。

[test]$ java -jar test.jar
2018/10/17 09:18:21.995 [main] INFO   ??????????

_人人人人人人人人人人人人_
> 進捗駄目です!!!! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

いやいや…この手のものは設定変えただけでは反映されないというのが世の常。
なので読み込み直す、リログでも可

[test]$ source /etc/locale.conf
[test]$
[test]$ java -jar test.jar
2018/10/17 09:20:36.583 [main] INFO   システムを開始します

お疲れ様でした