Log4j, Slf4j -> Log4j2 전환후 한글 깨짐
2023-06-03
1. 문제 발생
자바 웹 개발 워크북에 나와있는 Log4j2.xml를 Spring Framework Legacy 프로젝트에 적용후 Console의 로그를 확인시 한글깨짐을 발견했다. 모든 한글이 깨지는게 아닌 System.out.println()
에서의 한글은 안깨지고 log4j2적용 후 log4j2.xml이 적용 된 로그만 한글이 깨지는 상황이였다.
- Window -> Preferences -> General -> Worksapce -> Text file encoding 이
Default(MS949)
를UTF-8
로 바꿀 시 로그는 한글깨짐 없이 잘나오나System.out.println()
사용시 한글깨짐 현상이 생김. - Window -> Preferences -> General -> Editors -> Text Editors -> Speling -> Encoding 이
Default (MS949)
를UTF-8
로 바꿔도 해결안됨. - 실행 프로젝트 -> Properties -> Run/Debug Settings -> Launch configurtaion for ‘실행 프로젝트’ 선택 -> Edit -> Arguments -> VM arguments에
-Dfile.encoding=UTF-8
,-Dconsole.encoding=UTF-8
추가 및 Common -> EncodingDefault(MS949)
을UTF-8
로 바꿔도 해결 안됨.
※ 시도한 방법은 해결이 안될시 원상복구시켜 향후 문제가 생기지 않도록 했다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="INFO">
<Appenders>
<!-- 콜솔 -->
<Console name="console" target="SYSTEM_OUT">
<PatternLayout charset="UTF-8" pattern="%d{hh:mm:ss} %5p [%c] %m%n"/>
</Console>
</Appenders>
<loggers>
<logger name="org.springframework" level="INFO" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="kr.co.springlegacy" level="INFO" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="kr.co.springlegacy.mapper" level="TRACE" additivity="false">
<appender-ref ref="console" />
</logger>
<root level="INFO" additivity="false">
<AppenderRef ref="console"/>
</root>
</loggers>
</configuration>
2. 문제 원인
<Console name="console" target="SYSTEM_OUT">
<PatternLayout charset="UTF-8" pattern="%d{hh:mm:ss} %5p [%c] %m%n"/>
</Console>
charset="UTF-8"
으로 콘솔에 출력되는 로그의 인코딩을 UTF-8로 설정하는 부분에서 콘솔의 Encoding Default (MS949)
가 일치하지 않아 콘솔에 출력되는 로그가 한글이 꺠지는 문제가 발생함.
3. 문제 해결
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{hh:mm:ss} %5p [%c] %m%n"/>
</Console>
charset="UTF-8"
을 지워 콘솔에 출력되는 로그의 인코딩을 시스템의 기본 인코딩을 사용하도록 하면 문제 해결이 됨.
댓글남기기