일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2839
- 투어
- 포두부 보쌈
- Servlet
- 설탕 배달
- 서블릿
- HTTP API
- 맛집 투어
- 고모네 콩탕
- 맛집
- 알고리즘
- 완도산회
- 백준
- 2638
- 쓰레드 풀
- 문자열 압축
- BFS
- 양꼬치
- 호유동
- 2589
- 1로 만들기
- 스프링
- 동적 프로그래밍
- 다이나믹 프로그래밍
- 프로그래머스
- dp
- Spring
- 2020 KAKAO BLIND
- mvc
- 스프링 MVC
- Today
- Total
프로그래밍 공방
[Spring] 6-1. 스프링 MVC - Logging 본문
Logging
운영 시스템에서는 System.out.pringln() 같은 시스템 콘솔을 통해 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용하여 로그를 출력
Logging 라이브러리
스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 포함된다
스프링 부트 로깅 라이브러리는 기본으로 아래 로깅 라이브러리를 사용한다
- SLF4J (인터페이스)
- Logback (로그 라이브러리)
* 로그 라이브러리는 Logback, Log4J, Log4J2 등등 다양한 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 SLF4J 라이브러리이다
Logger 선언 및 사용
Logger는 아래와 같이 두 가지 방법을 통해 선언할 수 있다
public class LogTest {
// getClass() 대신 LogTest.class 도 가능하다
private static final Logger log = LoggerFactory.getLogger(getClass());
}
// annotation을 사용하여 생성
@Slf4j
public class LogText {
}
로그를 사용하는 방법은 아래와 같다
@Slf4j
@RestController
public class LogTestController {
@RequestMapping("/log-test")
public String logTest() {
String text = "test";
log.trace("trace log={}", text);
log.debug("debug log={}", text);
log.info("info log={}", text);
log.warn("warn log={}", text);
log.error("error log={}", text);
// 아래와 같은 방식은 로그를 남기지 않는 경우에도 + 계산 로직이 먼저 실행되므로 사용하면 안된다
log.debug("debug log=" + text);
return "ok";
}
}
스프링 부트의 로그 포맷
시간, 로그 레벨, 프로세스 ID, 쓰레드 명, 클레스 명, 로그 메시지
2021-10-31 12:57:09.037 INFO 26959 --- [main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
로그 레벨
로그는 application.properties에서 아래와 같이 레벨을 설정하여 출력을 남길 로그의 레벨을 선택할 수 있다
#전체 로그 레벨 설정(기본 info)
logging.level.root=info
#hello.springmvc 패키지와 그 하위 로그 레벨 설정
logging.level.hello.springmvc=debug
일반적으로 개발 서버는 debug, 운영 서버는 info를 출력한다
로그 사용시 장점
- 쓰레드 정보, 클래스 이름 같은 부가 정보를 함께 볼 수 있고, 출력 모양을 조정할 수 있다
- 로그 레벨에 따라 개발 서버에서는 모든 로그를 출력하고, 운영 서버에서는 출력하지 않는 등 로그를 상황에 맞게 조절할 수 있다
- 시스템 아웃 콘솔에만 출력하는 것이 아니라, 파일이나 네트워크 등, 로그를 별도의 위치에 남길 수 있다
(특히 파일로 남길때는 일별, 특정 용량에 따라 로그를 분할하는 것도 가능)
- 성능도 일반 System.out 보다 좋다(내부 버퍼링, 멀티 쓰레드 등)
'개발 > 스프링' 카테고리의 다른 글
[Spring] 7. 스프링 MVC - Thymeleaf, @ModelAttribute, PRG (1) | 2021.11.04 |
---|---|
[Spring] 6-2. 스프링 MVC - 기본 기능 (0) | 2021.11.02 |
[Spring] 5. 스프링 MVC - 구조 이해 (0) | 2021.10.27 |
[Spring] 4. 프레임워크 만들기 (0) | 2021.10.25 |
[Spring] 3. Servlet, JSP, MVC 패턴 (0) | 2021.10.18 |