로깅에는 다양한 수준이 있으며, 상황에 따라 적절한 로깅 수준을 출력하도록 해야 합니다.
로깅 수준 loggin level
error 오류와 예외만 출력
warn error보다 조금 더 많은 정보를 출력
info (warning 포함) info 수준에서 로깅된 모든 정보를 출력
debug info 보다 더 많은 정보를 출력
trace 로그에 있는 모든 정보를 출력
(개발을 진행중이라면 debug수준, 프로덕션 환경은 info수준으로 할 수 있습니다)
Spring Boot는 SLF4j를 사용하는 Logback을 기본 로깅 프레임워크로 사용하고 있습니다.
Spring Boot의 로깅 설정은 간편합니다.
spring-boot-starter-web의존성에는 spring-boot-starter-logging이 포함되어 있기 때문에,
logging에 대한 의존성을 따로 하지 않아도 됩니다.
프로퍼티 설정
프로퍼티 파일(application.properties)에서 출력할 로그의 수준을 제어할 수 있습니다.
logging.level.some.path=debug
logging.level.some.other.path=error
(특정 패키지와 그 패키지에서 출력할 logging 수준을 지정합니다)
아래는 그 예시입니다.
logging.level.org.springframework=info
logging.level.com.ride.amt=debug
springframework의 로깅 수준은 info이며,
그 하위 항목인, com.ride.amt패키지에 있는 모든 클래스는 debug수준에서 로깅됩니다.
사용방법
사용 방법은 아래와 같습니다.
출력
@Controller
public class LoginController {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@RequestMapping("login")
public String goToLoginPage(@RequestParam String name, ModelMap model) {
logger.debug("Request param is {}", name);
logger.info("printed at info level");
logger.warn("printed at warn level");
model.put("name", name);
return "login";
}
}
logger에 변수를 출력하기 위해 {}를 사용합니다.
2023-12-26T15:09:26.118+09:00 DEBUG 18656 --- [nio-8080-exec-2] com.ride.amt.login.LoginController : Request param is ride
2023-12-26T15:09:26.121+09:00 INFO 18656 --- [nio-8080-exec-2] com.ride.amt.login.LoginController : printed at info level
2023-12-26T15:09:26.121+09:00 WARN 18656 --- [nio-8080-exec-2] com.ride.amt.login.LoginController : printed at warn level
만약 프로퍼티파일의 설정에서 debug가 아닌 info로 변경한다면,
2023-12-26T15:09:26.121+09:00 INFO 18656 --- [nio-8080-exec-2] com.ride.amt.login.LoginController : printed at info level
2023-12-26T15:09:26.121+09:00 WARN 18656 --- [nio-8080-exec-2] com.ride.amt.login.LoginController : printed at warn level
debug는 출력되지 않습니다.
로그파일 저장
프로퍼티 설정을 통해 로그 파일을 저장할 수 있습니다
logging.file.name=logfile.log
프로퍼티 설정에 따라, 프로젝트 최상단 경로에 logfile.log가 생성됩니다.
로그파일은 애플리케이션 동작에 따라 실시간으로 작성됩니다.
Logger는 개발, 디버깅, 운영, 성능 최적화, 보안, 예측 등 다양한 측면에서 중요한 역할을 합니다.
적절한 수준의 로깅은 안정적이고 효율적인 애플리케이션을 수축하는 데 도움이 됩니다.
'Java' 카테고리의 다른 글
[JSP] JSP Fragment (프래그먼트) (1) | 2024.01.01 |
---|---|
[Spring MVC] 아키텍처 모델 종류; Dispatcher Servlet, Model 1, Model 2, Front Controller (1) | 2023.12.26 |
[JPA, Hibernate] 시작하기 -3, JPA 와 Hibernate (0) | 2023.12.23 |
[JPA, Hibernate] 시작하기 -2, JPA 및 Spring Data JPA 사용하기 (0) | 2023.12.23 |
[JPA, Hibernate] 시작하기 -1, 초기 설정 및 JDBC 사용하기 (0) | 2023.12.22 |