2010년 9월 28일 화요일

CXF에서 Log4J 사용하기

Resources:
http://www.techper.net/2008/01/30/configuring-cxf-logging-to-go-through-log4j/
http://gtko.springnote.com/pages/4826007

CXF에서 사용하는 로그는 별도로 지정하지 않으면 디폴트로 java.util.logging.Logger를 사용한다.
CXF에서 log4j를 사용하려면 다음과 같이 지정해 주면 된다.

1. -D옵션을 이용하여 시스템 property로 지정한다.
-Dorg.apache.cxf.Logger=org.apache.cxf.common.logging.Log4jLogger

2. META-INF/cxf/org.apache.cxf.Logger 파일로 설정한다.
-D옵션을 설정하기 용이치 않으면 위의 클래스패스에 위치한 파일에 아래와 같이 설정한다.
org.apache.cxf.common.logging.Log4jLogger

일반적으로 -D 옵션을 이용하는 방법과 동일한 결과를 프로그래밍적으로 해결하기 위한 방법으로
System.setProperty("org.apache.cxf.Logger", "org.apache.cxf.common.logging.Log4jLogger");
와 같이 설정하여 처리하고자 한다면 정상적으로 작동하지 않을 것이다.
이는 Spring이 초기화 되는 시점에 CXF 관련 빈들도 초기화 하는데 위의 코드가 반드시 CXF 빈들보다 먼저 초기화 된다고 볼 수 없기 때문이다.

1 또는 2의 방법중에서 하나만 설정해도 정상적으로 동작한다.
특히나 Inbound/Outbound 메시지를 보고 싶다면 log4j 설정파일에서
INFO레벨로 로그를 설정해주면 된다.

<logger name="org.apache.cxf" additivity="false">
<level value="INFO" />
<appender-ref ref="File_Appender" />
</logger>

댓글 없음:

댓글 쓰기