차근차근/Linux

linux tomcat log 한글 깨짐현상

예쁜꽃이피었으면 2014. 9. 18. 16:59

http://interwater.tistory.com/88


리눅스 시스템을 사용 하다 보면, 초기 setting 에서 많은 고생을 하게 된다.

SE 쪽 경험이 어느 정도 있지 않다면 특히 나처럼 삽질을 많이 하게 된다.

오늘은 Linux의 한글 작업에 대해서 설명 하고자 한다.
 
보통의 경우 linux 를 설치 하면 한글이  깨어져서 나온다.
물론 기본 setting 이 잘 되어서 한글이 안깨지는 경우도 있다^^;;

 이때에는 기본적으로 systeom encoding을 바꾸어 주어야 한다.
편법으로 profile 에서  LANG=ko_KR.eucKR 을 넣어서 shell 이뜰때 바꾸어 주는 방법이 있긴 하다.
(profile은 shell 로 connect 할때 가장 먼저 실행 되는 파일이다.)

하지만 이 방법은 시스템 전체의 lang 를 바꾸는 방법을 아니다.

현재 내가 setting 한 시스템은 Cent OS 이다. 따라서 다른 linux 계열의 경우 조금 다를수도 있다. 하지만 기본적인 개념 자체는 똑같다고 보면 된다.


shell 에서 locale 을 쳐 보자.
LANG=en_US.UTF-8
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=
보통 이렇게 되어 있을 것이다.

시스템 자체가 영어를 지원 하도록 되어 있다.
이때  LANG=ko_KR.eucKR  이 명령어를 치고 다시 locale 을 하면 아래와 같이 바뀐다.

[/root]locale
LANG=ko_KR.eucKR
LC_CTYPE="ko_KR.eucKR"
LC_NUMERIC="ko_KR.eucKR"
LC_TIME="ko_KR.eucKR"
LC_COLLATE="ko_KR.eucKR"
LC_MONETARY="ko_KR.eucKR"
LC_MESSAGES="ko_KR.eucKR"
LC_PAPER="ko_KR.eucKR"
LC_NAME="ko_KR.eucKR"
LC_ADDRESS="ko_KR.eucKR"
LC_TELEPHONE="ko_KR.eucKR"
LC_MEASUREMENT="ko_KR.eucKR"
LC_IDENTIFICATION="ko_KR.eucKR"
LC_ALL=

 이것이 아까 말한 편법이다.
 
주요한 것은 system config 에서 바꾸어 주는 방법이 가장 정확하다고 할수 있다.(사실 편법을 쓰든, system config 에서 바꾸어 주든 큰 차이는 없다.ㅋ)

 cd /etc/sysconfig
 
요기에 들어가보자.
거기 파일중에서 i18n 이라는 파일이 보일것이다.

[/etc/sysconfig]cat i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

위와 같은 형식으로 되어 있다.
즉, 이 파일의 LANG을 ko_KR.eucKR 로 바꾸어 주면 한글 설정이 완료 된 것이다.

한글 설정이 완료된 user 를 통해서 Tomcat 을 실행하면 log 가 정상적으로 한글이 나온다.

단, 그렇게 해도 안되는 경우가 있다.
system 은 한글 설정이 되어 있지만 tomcat java 를 실행 할때, 자바 실행 설정에서 다른 Encoding으로 바꾸는 경우 이다.

즉, tomcat 의 실제 실행 파일인 catalina.sh 에서의 설정이 다른 Encoding 으로 되어 있으면 linux 에서 로그를 볼때에 깨지게 된다.


java 에서 파일 encoding 을 Setting 하는 Option은 
-Dfile.encoding=UTF-8 이런 식으로 하게 된다.
위와 같이... 내가 관리 하는 시스템의 catalina.sh 에 
export CATALINA_OPTS=$CATALINA_OPTS" -Dfile.encoding=UTF-8"
이런 줄이 있음으로 해서 한글이 깨어 지는 현상이 발생하게 되었다.

이럴 경우 과감하게 이 줄을 지워 버리면 된다.
이줄이 없으면 java 실행시 기본적으로 system Encoding 을 따라 가기 때문에 자연 스럽게 Euc-KR 이 된다.

부디 나처럼 삽질 하는 사람이 없기를, 또는 한글 안됀다고 영어로만 로그 찍는 일 또한 없으시길.ㅋㅋㅋ


반응형