본문 바로가기

목록이 없습니다.

[Ubuntu] Tomcat 로그 한글 깨짐 현상

Server/Ubuntu
    반응형

    에러

    톰캣 로그에 아래 이미지와 같이 한글이 모두 물음표(?)로 나오는 현상을 마주했습니다.

     

    한글이 물음표(?)로 깨지는 톰캣 로그

     

    원래는 잘 나오던 한글들일 왜 이렇게 되어버린건지는 모르겠으나 해결방법을 찾아봅니다.

     

    해결방법

    찾아보니 catalina.sh 수행될 때 아래와 같이 JAVA_OPTS를 주면 해결이 된다고 합니다.

    아마 로그 파일을 만들 때 인코딩을 설정해주는것 같습니다.

     

    export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dfile.client.encoding=UTF-8 -Dclient.encoding.override=UTF-8"

     

    *변수명과 값 사이에는 공백을 넣으면 안된다고합니다.

     

    추가 해결방법 (2022.3.4)

    어떤 서버에서는 위의 설정을 안해줘도 알아서 로그에 한글이 잘 나오는데 어떤 서버는 한글이 잘 나오지 않는 것을 발견했습니다. 이는 ubuntu 설치 후 locale이 어디로 잡혀있냐에 따라서 한글이 깨지기도, 안 깨지고 잘 나오기도 하는것입니다. 따라서 위의 자바 옵션을 주는 방법 말고 설치한 ubuntu 서버의 locale을 변경해주는 방법도 정리합니다.

     

    현재 locale 확인 방법

    $ locale
    LANG=
    LANGUAGE=
    LC_CTYPE="POSIX"
    LC_NUMERIC="POSIX"
    LC_TIME="POSIX"
    ...

    이런식으로 나오는 서버는 흔치 않을거라 생각이 듭니다. 위의 이미지는 docker에서 ubuntu:18.04 이미지를 통해 컨테이너를 생성한 ubuntu의 locale 명령어 결과입니다. 이렇게 LANG이 비어있기 때문에 한글이 잘 나오지 않았던 것이지요.

     

    따라서 한글이 잘 나오도록 locale을 UTF-8로 셋팅해주겠습니다.

     

    한글팩 설치

    $ sudo apt-get install language-pack-ko
    $ sudo locale-gen ko_KR.UTF-8
    $ sudo dpkg-reconfigure locales

     

    locale 업데이트 (설정)

    locale 업데이트 하는 방법은 2가지 있습니다.

     

    명령어를 통해 locale 설정

    $ sudo update-locale LANG=ko_KR.UTF-8 LC_MESSAGES=POSIX

     

    /etc/default/locale 파일 수정

    LANG=ko_KR.UTF-8
    LC_MESSAGES=POSIX

    적용은 시스템 로그아웃 후 재접속 시 적용됩니다. 서버를 reboot 하는것도 좋습니다.

     

     

    * 근데 docker 컨테이너 안에서는 잘 안 바뀌네요 .. ㅠㅜ

     

    참고

    https://beomi.github.io/2017/07/10/Ubuntu-Locale-to-ko_KR/

     

     

    반응형