2017. 7. 4. 14:02ㆍframework/etc framework
log4j 로 root에서 INFO 레벨로 로그를 console에 출력하고 있었다.
INFO 레벨의 로그들은 모두 출력되는데 그 중에서 특정 로그를 보고싶지 않거나 출력하지 않도록 하고싶다.
나의 로그 패턴은 다음과 같다.
1 |
[%5p] %d{hh\:mm s} (%F\:%L) %c{1}.%M \: %m%n |
cs |
해석하자면 로그레벨 발생한시간 파일명 라인수 카테고리 메소드 내용 순이다.
위 패턴으로 console에 출력되는 로그 모양은 다음과 같다.
1
2
3
4
5
6
7
8
9 |
[ INFO] 01:34 56 (AbstractHandlerMethodMapping.java:220) RequestMappingHandlerMapping.registerHandlerMethod : Mapped ...
[ INFO] 01:34 56 (AbstractHandlerMethodMapping.java:220) RequestMappingHandlerMapping.registerHandlerMethod : Mapped ...
[ INFO] 01:34 56 (AbstractHandlerMethodMapping.java:220) RequestMappingHandlerMapping.registerHandlerMethod : Mapped ...
[ INFO] 01:34 56 (AbstractHandlerMethodMapping.java:220) RequestMappingHandlerMapping.registerHandlerMethod : Mapped ...
[ INFO] 01:34 56 (AbstractHandlerMethodMapping.java:220) RequestMappingHandlerMapping.registerHandlerMethod : Mapped ...
[ INFO] 01:34 56 (AbstractHandlerMethodMapping.java:220) RequestMappingHandlerMapping.registerHandlerMethod : Mapped ...
[ INFO] 01:34 56 (AbstractHandlerMethodMapping.java:220) RequestMappingHandlerMapping.registerHandlerMethod : Mapped ...
[ INFO] 01:34 56 (AbstractHandlerMethodMapping.java:220) RequestMappingHandlerMapping.registerHandlerMethod : Mapped ...
[ INFO] 01:34 56 (AbstractHandlerMethodMapping.java:220) RequestMappingHandlerMapping.registerHandlerMethod : Mapped ... |
cs |
로그를 해석해보면
레벨 : INFO
로그발생 파일 : AbstractHandlerMethodMapping.java
카테고리 : RequestMappingHandlerMapping 카테고리의
메소드 : registerHandlerMethod
와 같은 형식을 나타내고 있다.
이녀석은 단순히 request mapping 정보를 보여주는 녀석이다.
굳이 필요가 없어서 제외하려고 한다.
제외하는 방법은 특정 카테고리(클래스)에서 발생하는 로그의 레벨을 조정해서 내가 보고있는 로그레벨에서 나타나지 않게 하는 방식이다.
가장 처음 할 것은 제외시킬 클래스를 찾는 방법이다.
위 console 에서 내가 제외시켜야 하는 클래스는 무엇일까 ?
AbstractHandlerMethodMapping.java로 착각하기 쉽다.
하지만 AbstractHandlerMethodMapping.java는 로그가 발생한 파일일뿐 실제로 로그를 출력하는 녀석은 그 뒤에 있는 RequestMappingHandlerMapping 카테고리 즉 이녀석이 로그를 발생하는 근본적인 클래스라고 생각해야 한다.
패턴을 살펴보면 %F로 출력되는 녀석이 아니라 %c 로 출력되는 녀석을 찾으면 된다.
RequestMappingHandlerMapping 의 패키지를 찾아보았다.
출처 : http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.html
패키지 : org.springframework.web.servlet.mvc.method.annotation
클래스 : RequestMappingHandlerMapping
log4j.properties 에 선언하는 방법은 다음과 같다.
1 |
log4j.logger.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=WARN |
cs |
log4j.logger.제외하려는 클래스의 패키지명.제외하려는 클래스명=레벨
내가 보고 싶지 않은 녀석의 로그레벨을 WARN으로 올려줌으로써 INFO 레벨에서는 보이지 않도록 한 방법이다.
이로서 클레스별로 내가 보고싶으 않는 로그의 레벨을 조정해서 출력하지 않을 수 있다.
'framework > etc framework' 카테고리의 다른 글
Log4j의 정의, 개념, 설정, 사용법 정리 (2) | 2018.02.21 |
---|---|
Sitemesh 설정, 사용방법, 옵션 등에 대한 정리 (jsp에서 테스트) (0) | 2016.12.22 |
Log4j의 개념, 설치, 사용법, Query Multi Line (쿼리를 여러줄로 가독성 있게 표현) 설정 방법 등 - 전자정부 - eGovFrame spring 기반 | etc framework (2) | 2016.01.05 |
SiteMesh 설정 - 전자정부 - eGovFrame spring 기반 | etc framework (6) | 2016.01.05 |
iBatis에서 MyBatis로 변경하는 과정 및 MyBatis설정 - eGovFrame spring 기반 (0) | 2016.01.05 |