<?xml version="1.0" encoding="EUC-KR"?>
<configuration status="WARN">
    <appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout charset="UTF-8" pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>

        <RollingFile name="file" fileName="./logs/sample.log" filePattern="./logs/sample.%i.%d{yyyy-MM-dd}.log">
            <PatternLayout charset="UTF-8" pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="10000" fileIndex="min" />
        </RollingFile>
    </appenders>

    <loggers>
	...
	...

PatternLayout에 charset="UTF-8" 추가할 것.

그래도 안된다면 프로젝트에서 사용하는 인코딩 확인하고 EUC-KR 등 다른 거 입력.

 

참고 : log4j2 파라미터 확인

https://logging.apache.org/log4j/2.x/manual/layouts.html

코딩하면서 개발자 도구를 사용하다가 에러를 발견하였다.

XML5632: 루트 요소는 하나만 사용할 수 있습니다.

일단 화면은 띄워지는데, 안보이는 곳에서 에러가 난 듯 싶다.
어느 파일에서 에러가 발생했는지 파일명 표기가 안되어있어서 찾는데 좀 오래걸리긴 했지만, 여튼 찾았다.
ajax를 호출하는 부분에서 리턴값 때문에 발생한 에러였다.
ajax url로 가져오는 데이터 부분에서, 이쪽에 해당 데이터가 없어서 발생한 듯 싶다. (검색 엔진 없음)
임시로 url 주소를 바꿔서 가짜 데이터를 넣거나 공백으로 입력해서 리턴값을 수정하면 에러는 사라진다.


기능 테스트 도중 IE 9와 IE 10에서 동작하지 않는 부분을 발견하였다. 소스코드를 뜯어보니.. 아무래도 createElement() 부분에서 에러가 난 듯 싶다.


위 사진에서처럼 createElement() 부분에서 InvalidCharacterError() 가 발생하였다.
IE11에서는 멀쩡히 돌아갔었는데, 이상하다.. 에러 발생 이유를 찾아보니 IE9나 10에서는 createElement 안에는 <>를 이용해 풀 태그로 인자를 넘기는 게 안된다는 듯 하다.
실제로 에러가 난 부분의 소스코드를 아래와 같았다.

 var table = document.createElement("<table cellpadding="0" cellspacing="0" border="0">");


아래와 같은 방식으로 해결하였다.

if(IE 버전 체크) { // not IE9, IE10
    var table = document.createElement('<table cellpadding="0" cellspacing="0" border="0">');
} else {
    var table = document.createElement('table');
    table.setAttribute('cellpadding', 0);
    table.setAttribute('cellspacing', 0);
    table.setAttribute('border', 0);
}


익스프로러 버전을 체크하고 createElement() 대신 setAttribute()를 활용하면 해결할 수 있다.

+ Recent posts