Spring Boot 로그 찍먹하기

까망사과·2023년 10월 20일
0

Spring 찍먹하기

목록 보기
4/5

✏️ 로그 형식

아래는 Spring Boot에서 제공하는 기본 로그 예시다.

2023-10-19T12:17:32.235Z  INFO 34306 --- [           main] o.s.b.d.f.logexample.MyApplication       : Starting MyApplication using Java 17.0.9 with PID 34306 (/opt/apps/myapp.jar started by myuser in /opt/apps/)
2023-10-19T12:17:32.241Z  INFO 34306 --- [           main] o.s.b.d.f.logexample.MyApplication       : No active profile set, falling back to 1 default profile: "default"
2023-10-19T12:17:34.422Z  INFO 34306 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2023-10-19T12:17:34.441Z  INFO 34306 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-10-19T12:17:34.442Z  INFO 34306 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.15]
2023-10-19T12:17:34.599Z  INFO 34306 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-10-19T12:17:34.601Z  INFO 34306 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2199 ms
2023-10-19T12:17:35.149Z  INFO 34306 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2023-10-19T12:17:35.165Z  INFO 34306 --- [           main] o.s.b.d.f.logexample.MyApplication       : Started MyApplication in 3.789 seconds (process running for 4.297)

각 줄의 로그는 아래 요소들의 순서대로 구성되어 있다.

  • 날짜 및 시각: ms 단위까지 기록되어 있다.
  • 로그 레벨: ERROR, WARN, DEBUG, INFO, TRACE 중 하나다.
  • 프로세스 ID
  • 스레드 이름: 대괄호로 감싸여 있다.
  • 로그 소스: 기본적으로 클래스 이름이 축약된 형태다.
  • 로그 메시지

🖨️ 로그 파일로 저장하기

기본적으로 로그는 콘솔에만 출력된다.
하지만 파일로도 저장하고자 한다면 logging.file 프로퍼티들을 사용할 수 있다.

logging.file.name 프로퍼티로는 파일의 이름, logging.file.name 프로퍼티로는 저장 경로를 설정할 수 있다.
한 파일 당 용량은 10MB로 제한되며 ERROR, WARN, INFO 레벨의 로그는 기본적으로 저장된다.


🪜 로그 레벨 설정하기

아래 예시와 같이 logging.level 프로퍼티에 로그 지점 이름과 로그 레벨을 설정할 수 있다.

# org.springframework.jdbc.core 패키지에서 기록되는 로그의 레벨을 TRACE로 설정한다.
logging:
  level:
	org.springframework.jdbc.core: TRACE

🎨 색으로 구별된 로그 출력하기

인텔리제이 Ultimate에서는 별도의 설정 없이도 로그 레벨 및 소스 등에 색이 입혀져서 가독성이 좋은 반면, Community Edition에서는 모든 텍스트가 같은 색깔로 출력돼서 당황했다.

spring.output.ansi.enabled 프로퍼티를 always로 설정하면 Community Edition의 콘솔에서도 색이 입혀진 로그를 확인할 수 있다.

spring:
  output:
    ansi:
      enabled: always

🔍 참고 링크

Spring Boot 참조 문서 - Core Features - Logging

0개의 댓글