2023-06-03

1. 문제 발생

image-20230602164348958

자바 웹 개발 워크북에 나와있는 Log4j2.xml를 Spring Framework Legacy 프로젝트에 적용후 Console의 로그를 확인시 한글깨짐을 발견했다. 모든 한글이 깨지는게 아닌 System.out.println()에서의 한글은 안깨지고 log4j2적용 후 log4j2.xml이 적용 된 로그만 한글이 깨지는 상황이였다.

  1. Window -> Preferences -> General -> Worksapce -> Text file encoding 이 Default(MS949)UTF-8로 바꿀 시 로그는 한글깨짐 없이 잘나오나 System.out.println() 사용시 한글깨짐 현상이 생김.
  2. Window -> Preferences -> General -> Editors -> Text Editors -> Speling -> Encoding 이 Default (MS949)UTF-8로 바꿔도 해결안됨.
  3. 실행 프로젝트 -> Properties -> Run/Debug Settings -> Launch configurtaion for ‘실행 프로젝트’ 선택 -> Edit -> Arguments -> VM arguments에 -Dfile.encoding=UTF-8, -Dconsole.encoding=UTF-8추가 및 Common -> Encoding Default(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"을 지워 콘솔에 출력되는 로그의 인코딩을 시스템의 기본 인코딩을 사용하도록 하면 문제 해결이 됨.

image-20230602172922380

댓글남기기