티스토리 뷰
| log4j.xml
먼저 log4j.xml 파일을 살펴보자.
"Project Name"\src\main\resources 경로에 log4j.xml 파일이 있다.
<appender> 태그에는 로그를 어떻게 출력할지를 등록할 수 있다.
name="console" 로 설정하고 console에 로그를 출력해보자.
ConversionPattern 으로 로그를 어떻게 남길지 설정할 수도 있다.
1 2 3 4 5 6 | <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{HH:mm:ss} %-5p: %c >> %m%n" /> </layout> </appender> | cs |
먼저 Application Loggers의 level을 설정할 수 있다.
Log level은 TRACE -> DEBUG -> INFO -> WARN -> ERROR -> FATAL 순서로 이루어져 있다.
> TRACE : Debug보다 좀더 상세한 정보
> DEBUG : 프로그램을 디버깅하기 위한 정보 지정
> INFO : 상태변경과 같은 정보성 메시지
> WARN : 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지
> ERROR : 요청을 처리하는 중 문제가 발생한 경우
> FATAL : 아주 심각한 에러가 발생한 상태, 시스템적으로 심각한 문제가 발생해서 어플리케이션 작동이 불가능할 경우
1 2 3 | <logger name="com.cristoval.web"> <level value="trace" /> </logger> | cs |
다음은 Spring 자체 로그다.
Spring 내부적으로 발생하는 로그를 의미한다.
사실상 Spring 내부적인 문제는 봐도 처리할 수 없는 경우가 많으므로..
INFO level이 default 이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!-- 3rdparty Loggers --> <logger name="org.springframework.core"> <level value="info" /> </logger> <logger name="org.springframework.beans"> <level value="info" /> </logger> <logger name="org.springframework.context"> <level value="info" /> </logger> <logger name="org.springframework.web"> <level value="info" /> </logger> | cs |
위에서 해당되지 않는 로그는 Root Logger에 설정한다.
마찬가지로 console에 출력해주기 위해 appender-ref를 console로 설정하였다.
1 2 3 4 5 | <!-- Root Logger --> <root> <priority value="info" /> <appender-ref ref="console" /> </root> | cs |
log4j.xml 전체 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:config<logger name="com.cristoval.web"> <level value="trace" /> </logger>uration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{HH:mm:ss} %-5p: %c >> %m%n" /> </layout> </appender> <!-- Application Loggers --> <logger name="com.cristoval.web"> <level value="trace" /> </logger> <!-- 3rdparty Loggers --> <logger name="org.springframework.core"> <level value="info" /> </logger> <logger name="org.springframework.beans"> <level value="info" /> </logger> <logger name="org.springframework.context"> <level value="info" /> </logger> <logger name="org.springframework.web"> <level value="info" /> </logger> <!-- Root Logger --> <root> <priority value="info" /> <appender-ref ref="console" /> </root> </log4j:configuration> | cs |
|| 로그 확인하기
Java 파일에서 System.out.println으로 log를 확인하는 것 보다 훨씬 편리하다.
Java 파일 어디에서나 logger만 등록되어있다면 사용 가능하다.
test
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | @Controller public class HomeController { private static final Logger logger = LoggerFactory.getLogger(HomeController.class); @RequestMapping(value = "/", method = RequestMethod.GET) public String home(Locale locale, Model model) { logger.trace("> trace : {}, {}.", locale, "Hello"); logger.debug("> debug: {}.", locale); logger.info("> info : {}.", locale); logger.warn("> warn : {}.", locale); logger.error("> error : {}.", locale); return "home"; } } | cs |
console
18:41:33 TRACE: com.cristoval.web.controller.HomeController >> > trace : ko_KR, Hello.
18:41:33 DEBUG: com.cristoval.web.controller.HomeController >> > debug: ko_KR.
18:41:33 INFO : com.cristoval.web.controller.HomeController >> > info : ko_KR.
18:41:33 WARN : com.cristoval.web.controller.HomeController >> > warn : ko_KR.
18:41:33 ERROR: com.cristoval.web.controller.HomeController >> > error : ko_KR.
***
편리하지만 타이핑하기 번거로운 Logger 등록 과정을
Template에 등록해놓으면 간편하게 사용할 수 있다.
[JAVA] 자주 사용하는 코드 Templates 만들기(Ctrl + Space)
'Web > Spring' 카테고리의 다른 글
[MyBatis] MyBatis Setting 을 해보자 ! (4) | 2020.10.22 |
---|---|
[Spring] Spring@MVC 구조 및 @annotation 살펴보기. (0) | 2020.10.21 |
[Spring] Spring@MVC 프로젝트 세팅하기 (0) | 2020.10.21 |
[Spring] Spring AOP (0) | 2019.09.22 |
[Spring] Spring-IoC, Bean, DI (0) | 2019.09.21 |