티스토리 뷰

SMALL

현재 프로젝트 로그라이브러리로 log4j2를 사용하고있다. 그러다가 사용하게된 라이브러리가 있는데 이 라이브러리는 log4j 를 사용하고있었다. 의존성 전이에 따라 큰 문제없이 프로젝트 구동은 되지만 워닝 로그가 뜨게된다.


log4j:WARN No appenders could be found for logger (org.apache.activemq.util.ThreadPoolUtils).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.


이런로그가 뜨게되는데 무시해도 돌아가는덴 지장없지만... 없애보자.


1. log4j 설정

일단 저 워닝 로그가 뜨는 이유는 log4j 설정이 없기때문이다. log4j 설정을 추가해주면 사라지게된다. 자바코드로 설정한다면 아주 간단하게 1줄만 넣어주면 된다.


BasicConfigurator.configure();


기본설정으로 설정하겠다는 의미인데 1번만 설정해주면 되니 스프링을 사용한다면 빈 설정같은곳에 넣어주면 되겠다.


해결은 됐겠다마는 저 설정은 설정을 공유하는게 아니고 log4j2와 log4j 설정이 양립하게되는 설정이다. 즉 로그 찍히는걸보면 서로 다른 포맷의 로그들이 찍히게된다. 이걸 원하는 사람은 많지 않을것이다.


2. log4j2 설정 공유

사실 정말 원하는 해결법은 이쪽일것이다. 이부분에도 크게 어려운점은 없고 몇가지 의존성들을 추가해주면 된다.


일단 log4j 를 사용하는 라이브러리에서 log4j 의존성을 가져오지못하게 막자. 메이븐 사용중이라면 maven exclude 같은 키워드로 검색하면 메이븐 문법이 나올것이니 그거까진 다루지않는다.

exclude(module: 'log4j')
exclude(module: 'slf4j-log4j12')


그리고 아래 의존성들을 추가해주자.

compile("org.apache.logging.log4j:log4j-api:2.10.0")
compile("org.apache.logging.log4j:log4j-core:2.10.0")
compile("org.apache.logging.log4j:log4j-slf4j-impl:2.10.0")
compile("org.apache.logging.log4j:log4j-1.2-api:2.10.0")


이것들만 추가해주면 끝이다. log4j에서 log4j2 설정을 사용하도록 bridge 관련 클래스들을 제공해주는데 그것들이 저 안에 들어있는것같다. 어차피 이제 log4j를 내가 쓸일은 없을것같으니 크게 궁금하지도않고 그냥 해결돼서 넘어간다.


참고

https://stackoverflow.com/questions/22321109/configuring-log4j2-and-log4j-using-a-single-log4j2-xml-file

http://logging.apache.org/log4j/2.x/faq.html#which_jars

LIST
공유하기 링크
TAG
댓글
댓글쓰기 폼