프로그램 실행 중 발생하는 정보를 기록하는 행위
print() 대신 로깅을 사용하여 정보를 저장하고
로그 레벨로 구분해 유지보수를 쉽게 하기 위함
권장: 롬복(Lombok)에서 제공하는 @Log4j2 어노테이션 활용
주로 컨트롤러와 서비스 클래스에서 사용됨
@Log4j2
public class Controller {
// 클래스 내부에서 log 객체로 로그 작성 가능
}
함수 용도 사용 단계
log.debug() 개발 및 테스트 단계에서 상세 정보 기록 개발 단계
log.info() 상태 확인 용도, 주요 흐름 기록 개발/운영 단계
log.warn() 경고 메시지, 문제 발생 가능성 알림 운영 단계
log.error() 예외 및 오류 발생 시 기록 운영 단계
5. application.properties에서 로깅 설정
로그 레벨 우선순위:
debug < info < warn < error
스프링 기본값은 info
logging.level.root=info # 원하는 레벨(debug, warn, error 등)로 변경 가능
패키지명은 자바 소스 폴더 기준 패키지 경로(예: com.example.service)
logging.level.com.example.service=debug
스프링 부트 로깅 설정 가이드
스프링 부트에서는 기본적으로 로그 레벨이 INFO로 설정되어 있습니다. 하지만 개발 단계에서는 더 자세한 로그가 필요하므로 DEBUG 레벨로 변경하는 경우가 많습니다.
로그 레벨은 DEBUG < INFO < WARN < ERROR 순으로 중요도가 높아집니다.
DEBUG 설정 시 모든 로그가 출력됩니다.
INFO 설정 시 INFO, WARN, ERROR 로그가 출력됩니다.
WARN 설정 시 WARN, ERROR 로그만 출력됩니다.
logging.level.root=debug
logging.level.example.day10=debug
위 설정은 루트 로그 레벨과 example.day10 패키지의 로그 레벨을 DEBUG로 설정하는 예입니다.
로그 파일은 프로젝트 내부 특정 경로에 저장할 수 있습니다. 예를 들어 logs/app.log 경로에 로그를 저장하려면 다음과 같이 설정합니다.
logging.file.name=logs/app.log
이때, logs 폴더는 프로젝트 내에 생성되며, .gitignore에 해당 폴더를 추가해 로그 파일이 GitHub에 올라가지 않도록 관리하는 것이 좋습니다.
로그 파일의 크기와 보존 기간을 설정할 수 있습니다.
logging.logback.rollingpolicy.max-file-size=1MB
logging.logback.rollingpolicy.max-history=10
max-file-size : 하나의 로그 파일 최대 크기 (예: 1MB)
max-history : 최대 로그 파일 개수 (10개 이상이 되면 가장 오래된 파일부터 삭제 또는 대체)
운영 단계에서는 스프링 프레임워크 내부 로그가 너무 많으면 성가실 수 있습니다. 이때는 내부 로그 레벨을 WARN 이상으로 설정해 필요한 경고 이상만 출력하도록 할 수 있습니다.
logging.level.org.springframework.boot.web=warn
logging.level.org.springframework.boot.web.embedded.tomcat=warn
logging.level.org.apache.catalina=warn
logging.level.org.apache.coyote=warn
logging.level.org.springframework.web=warn
이 설정을 통해 스프링 내부 로그가 줄어들어 로그 관리가 수월해집니다.
로그 메시지의 형식을 원하는 대로 꾸밀 수 있습니다.
%d{yyyy-MM-dd HH:mm:ss} : 날짜 및 시간
%level : 로그 레벨
%logger : 로그를 발생시킨 클래스 또는 패키지명
%msg : 로그 메시지
%n : 줄바꿈
예시)
logging.pattern.file= %d{yyyy-MM-dd HH:mm:ss} %msg %n
logging.pattern.console= %d{yyyy-MM-dd HH:mm:ss} %level %logger %msg %n