(Spring4셋팅 Step4) log4j 셋팅

프로그래밍/Java | 2015. 7. 15. 22:27
Posted by 애니스

1. pom.xml 추가

 

log4j dependency를 추가하자

 

    <!-- log4j  -->
  <dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.17</version>
  </dependency>

 

이번에는 log4j 설정 파일을 생성하자.

경로는 src/main/resources 밑에 log4j.properties 생성한다.

 

 

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm} %-5p (%F:%L) - %m%n

 

로그레벨
FATAL : 아주 심각한 에러 발생
ERROR : 요청을 처리하는 중 문제가 발생
WARN : 처리 가능한 문제
INFO : 로그인, 상태변경과 같은 정보성 메시지
DEBUG : 디버그 용도
TRACE : 디버그 레벨보다 좀 더 상세한 상태

(FATAL > ERROR > WARN > INFO > DEBUG > TRACE)

 

 

설정 파일 중 log4j.rootLogger 이 있다.

 

현재는 dedug로 셋팅이 되어 있는데 이 레벨에 따라 로그 출력 범위를 정할 수 있다.

 

이 부분은 아래 테스트를 통해 확인해보겠다.

 

 

이제 로그를 출력해보자.

 

MemberController의 selectMember에 추가해보겠다.

 

 

package com.test.web.member.controller;

 

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.test.web.member.bean.MemberBean;
import com.test.web.member.service.MemberService;

 

@Controller
public class MemberController {
 
 private final Logger logger = LogManager.getLogger(this.getClass());

 
 @Autowired
 MemberService memberService;
 
 @RequestMapping("/member/selectMember.do")
 public String selectMember(MemberBean memberBean, Model model) throws Exception{
  
  logger.error("/member/selectMember.do");
  logger.warn("/member/selectMember.do");
  logger.info("/member/selectMember.do");
  logger.debug("/member/selectMember.do");
  logger.trace("/member/selectMember.do");

  
  memberBean = memberService.selectMember(memberBean);
  
  model.addAttribute("memberBean", memberBean);
  
  return "member/selectMember";
 } 

 

위에 Logger 객체 생성 후 사용할 수 있다.

 

테스트를 해보자.

 

/member/selectMember.do URL 호출시 아래와 같이 error, warn, info, debug 만 출력되고, trace는 출력되지 않는다.

 

이건 위에 log4j.rootLogger가 debug로 설정되어 있어, debug까지만 출력된다.

 

2015-08-16 16:08:41.524[ERROR] (MemberController.java:24) - /member/selectMember.do
2015-08-16 16:08:41.528[WARN ] (MemberController.java:25) - /member/selectMember.do
2015-08-16 16:08:41.529[INFO ] (MemberController.java:26) - /member/selectMember.do
2015-08-16 16:08:41.529[DEBUG] (MemberController.java:27) - /member/selectMember.do

 

 

그럼 log4j.rootLogger 를 info로 변경해보자.

 

 

콘솔창을 봤을때 아래와 같이 error, warn, info 까지만 출력된다.

 

2015-11-16 16:11:57.015[ERROR] (MemberController.java:24) - /member/selectMember.do
2015-11-16 16:11:57.019[WARN ] (MemberController.java:25) - /member/selectMember.do
2015-11-16 16:11:57.020[INFO ] (MemberController.java:26) - /member/selectMember.do 

 

 

로그도 너무 많은 양을 출력하다보면 시스템에 부하를 줄 수 있다.

 

실 서버(운영서버)에는 log level이 error나 warn등 에러만 출력하도록 셋팅하는 경우가 많다.

 

로그 작성시에도 이를 고려하여,

 

개발 관련 테스트 로그는 logger.debug나 logger.info 로 작성하는 것이 좋다.

 

 

 
블로그 이미지

애니스

카테고리

분류 전체보기 (10)
프로그래밍 (10)
애니스전용 (0)