* Logback
- log4j 기반으로 작성됨
- log4j 성능보다 10배 정도 빠르고 메모리 사용량도 적다.
- log4j는 로그설정을 변경할 경우 서버를 재시작해야 반영되었는데
Logback은 로그설정이 변경될 경우 서버를 재시작하지 않아도 바로 반영된다
- Logback 로깅 구현제로 slf4j(Simple Logging Facade for Java)를 함께 사용
slf4j는 자바의 다양한 로그 모듈들의 추상체로 자바의 인터페이스와 비슷한 역할을 한다.
slf4j의 API를 이용할 경우 실제 로깅을 담당하는 로깅 구현체으 ㅣ종류와 상관없이 일관된 로그 코드를 작성가능.
로그출력 등 로깅코드는 slf4j를 이용하면 내부적으로는 log4j,Logback 같은 로깅구현체가 그 기능을 구현한다
- 스프링 부트는 Logback 기본으로 사용
1. Logback 설정
- /board/src/main/resources/logback-spring.xml 만들기
- appender는 로그를 어디에 출력할지 결정(콘솔,파일기록,DB저장등)
- logger는 로그를 출력하는 요소로 Level 속성을 통해서 출력할 로그의 레벨을 조절하여 appender에 전달
아래에서는 debug레벨의 로그를 출력하는 형식은 console이라는 이름의 appender 사용
<?xml version="1.0" encoding="UTF-8" ?>
<configuration level="debug">
<!--appender는 로그를 어디에 출력할지 결정(콘솔,파일기록,DB저장등)-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n</pattern>-->
<pattern>%d %-5p %m%n</pattern>
</encoder>
</appender>
<appender name="console-infolog" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %-5p %m%n</pattern>
</encoder>
</appender>
<!--로거는 로그를 출력하는 ㅇ소로 Level 속성을 통해서 출력할 로그의 레벨을 조절하여 appender에 전달-->
<!-- debug레벨의 로그를 출력하는 형식은 console이라는 이름의 appender 사용 -->
<logger name="board" level="DEBUG" appender-ref="console"/>
<!--루트로거-->
<root level="off">
<appender-ref ref="console" />
</root>
</configuration>
2. Logback 사용하기
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Controller
public class BoardController {
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private BoardService boardService;
@RequestMapping("/board/openBoardList.do")
public ModelAndView openBoardList() throws Exception{
log.debug("**** openBoardList ");
ModelAndView mv = new ModelAndView("board/boardList"); ///resources/templates 아래
List<BoardDto> list = boardService.selectBoardList();
mv.addObject("list", list);
return mv;
}
}
- 롬복으로 사용시에는 @Slf4j 사용하면 로거 따로 생성 필요없다.
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
public class BoardServiceImpl implements BoardService{
@Autowired
private BoardMapper boardMapper;
@Override
public List<BoardDto> selectBoardList() throws Exception {
log.debug("*** BoardServiceImpl ", boardMapper);
return boardMapper.selectBoardList();
}
}
'SpringBoot > (책)스프링부트 시작하기' 카테고리의 다른 글
[springboot] 6. HandlerInterceptor(인터셉터) 사용하기 (0) | 2023.04.23 |
---|---|
[springboot] 5-1. Log4JDBC로 쿼리 로그 정렬하기 (0) | 2023.04.23 |
[springboot] 3-3. springboot mybatis typeAliases 설정하기 (0) | 2023.04.23 |
[springboot ] 5. Spring-Boot에 mapper 만들기 (0) | 2023.04.22 |
[springboot ] 4. Spring-Boot에 Lombok 설치 및 연동 (0) | 2023.04.22 |