log4j.xml에 대한 질문입니다..
- 작성자 :
- 장*주
- 작성일 :
- 2010-10-18 01:01:10
- 조회수 :
- 3,725
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
제가 셋팅한 log4j.xml은 첨부파일로 올리겠습니다..
현재 log4j.xml 을 사용해서 로그를 남기려고 하는데요...
옛날에 log4j.properties 에서는 ConsoleAppender에게 Threshold=DEBUG 를
줘서 Console에는 모든 DEBUG 이상을 출력하고...
DailyRollingFileAppender 에게 Threshold=ERROR 를 줘서 모든 ERROR 이상만
로그파일로 찍어 냈습니다...
그런데 log4j.xml은 그렇게 설정할수 있는 방법이 없는것 같더군요..
1. log4j.xml 에서는 위와 같이 할수 있는 방법이 없는건가요??
예제 파일에서와 같이
모든 패키지별로 각각 따로따로 logger를 등록해야 하는건가요??
즉, 패키지별로 설정 하는것이 아니라 모든 패키지의 DEBUG는 console에
ERROR는 별도로 로그파일에 기록하게 할수 있는것인지요??
2. 패키지별로 각각 따로 logger를 등록할때에 아래와 같이 DEBUG는 콘솔에
찍어주고 ERROR는 별도로 로그파일에 기록하게 하는 방법이 있나요??
<logger name="org.springframework" additivity="false">
<level value="DEBUG">
<appender-ref ref="console" />
</level>
<level value="ERROR">
<appender-ref ref="dailyRollingFile" />
</level>
</logger>
위와 같은 효과를 얻기위해서 아래와 같이 설정을 했더니
<logger name="org.springframework">
<level value="DEBUG" />
<appender-ref ref="console" />
</logger>
<root>
<level value="ERROR" />
<appender-ref ref="dailyRollingFile" />
</root>
Console 과 로그파일 둘다 DEBUG 이상이 전부다 찍혀 버리더라구요..
제 생각에는 로그파일에는 ERROR만 찍힐줄 알았더니....
그래서 이번에는 반대로 아래와 같이 해봤더니
<logger name="org.springframework">
<level value="ERROR" />
<appender-ref ref="dailyRollingFile" />
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="console" />
</root>
Console에는 DEBUG는 안찍히고, ERROR만 찍힙니다..
로그파일에는 DEBUG고, ERROR고 전부다 안찍히구요..
제가 생각했던 의도와 너무 다릅니다...
위와 같은 상황이 생기는 이유가 뭔가요???
그리고 제가 원하는 방식 즉, 모든 ERROR는 전부 로그파일에 저장이 되어지고,
DEBUG는 제가 원하는 패키지를 설정할수 있는 방법은 무엇인가요????
현재 log4j.xml 을 사용해서 로그를 남기려고 하는데요...
옛날에 log4j.properties 에서는 ConsoleAppender에게 Threshold=DEBUG 를
줘서 Console에는 모든 DEBUG 이상을 출력하고...
DailyRollingFileAppender 에게 Threshold=ERROR 를 줘서 모든 ERROR 이상만
로그파일로 찍어 냈습니다...
그런데 log4j.xml은 그렇게 설정할수 있는 방법이 없는것 같더군요..
1. log4j.xml 에서는 위와 같이 할수 있는 방법이 없는건가요??
예제 파일에서와 같이
모든 패키지별로 각각 따로따로 logger를 등록해야 하는건가요??
즉, 패키지별로 설정 하는것이 아니라 모든 패키지의 DEBUG는 console에
ERROR는 별도로 로그파일에 기록하게 할수 있는것인지요??
2. 패키지별로 각각 따로 logger를 등록할때에 아래와 같이 DEBUG는 콘솔에
찍어주고 ERROR는 별도로 로그파일에 기록하게 하는 방법이 있나요??
<logger name="org.springframework" additivity="false">
<level value="DEBUG">
<appender-ref ref="console" />
</level>
<level value="ERROR">
<appender-ref ref="dailyRollingFile" />
</level>
</logger>
위와 같은 효과를 얻기위해서 아래와 같이 설정을 했더니
<logger name="org.springframework">
<level value="DEBUG" />
<appender-ref ref="console" />
</logger>
<root>
<level value="ERROR" />
<appender-ref ref="dailyRollingFile" />
</root>
Console 과 로그파일 둘다 DEBUG 이상이 전부다 찍혀 버리더라구요..
제 생각에는 로그파일에는 ERROR만 찍힐줄 알았더니....
그래서 이번에는 반대로 아래와 같이 해봤더니
<logger name="org.springframework">
<level value="ERROR" />
<appender-ref ref="dailyRollingFile" />
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="console" />
</root>
Console에는 DEBUG는 안찍히고, ERROR만 찍힙니다..
로그파일에는 DEBUG고, ERROR고 전부다 안찍히구요..
제가 생각했던 의도와 너무 다릅니다...
위와 같은 상황이 생기는 이유가 뭔가요???
그리고 제가 원하는 방식 즉, 모든 ERROR는 전부 로그파일에 저장이 되어지고,
DEBUG는 제가 원하는 패키지를 설정할수 있는 방법은 무엇인가요????
A
안녕하세요.. 장선주님..
log4j.xml에서도 threshold 파라미터가 존재합니다. (appender)
ex:
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="ERROR" />
<layout class="org.apache.log4j.PatternLayout">
....
</layout>
</appender>
그리고 <logger />에 여러 개의 appender-ref를 지정하실 수 있습니다.
따라서 logger에서는 높은 단계의 level을 사용하시고.. appender에서 threshold로 필요한 부분만 적용하시면 될 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
log4j.xml에서도 threshold 파라미터가 존재합니다. (appender)
ex:
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="ERROR" />
<layout class="org.apache.log4j.PatternLayout">
....
</layout>
</appender>
그리고 <logger />에 여러 개의 appender-ref를 지정하실 수 있습니다.
따라서 logger에서는 높은 단계의 level을 사용하시고.. appender에서 threshold로 필요한 부분만 적용하시면 될 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.