인프런에서 백기선님의 스프링부트 개념과 활용 강의를 듣고, 개인적으로 공부하며 핵심만 정리한 글입니다.
로깅 작업
1) 스프링5 부터 변경 사항
스프링 내 기본적인 로그 개념과 로거 종류는 이전에 포스팅한 [부스트코스 웹 프로그래밍] 로깅 참고하면 된다.
스프링5 부터 달라진 사항이 있다.
이전에는 pom.xml
에서 Commons Logging 을 exclusion 한 뒤, logback 을 로거로 붙여줘야 했다.
그런데 스프링 5부터는 내부에서 알아서 logback 으로 찍어준다.
대략 다음과 같은 플로우임.
Commons Logging(Spring 내장) -> SLF4j or Log4j2 - Logback
그래서 스프링5 부터는 그냥 써도 Logback 으로 찍히기 때문에, 별도의 설정이 필요없다.
2) 로거 설정
application.properties
에서 로거와 관련된 설정들을 할 수 있다.
spring.output.ansi.enabled
:always
로 주면 콘솔에서 뜨는 로그에 색이 입혀짐.logging.path
: 로그 파일이 저장되는 디렉토리logging.file
: 로그 파일 이름 (default:spring.log
)logging.file.max-size
: 저장할 로그 최대 용량 (default:10MB
)logging.level.<패키지 경로>
:디버그 레벨
을 주면, 해당 패키지 내 로그들은 해당 로그레벨로 로깅됨.
예를 들면 다음과 같이 설정해볼 수 있다.
// application.properties
spring.output.ansi-enabled=always
logging.path=logs
logging.level.me.heumsi.springinit=DEBUG
3) 로거 사용
로거는 다음과 같이 필요한 곳에서 LoggerFactory.getLogger("Class 이름")
를 통해 사용할 수 있다.
@Controller
public class SampleController {
Logger logger = LoggerFactory.getLogger(SampleController.java)
logger.info("heumsi")
...
}
커스터마이징
1) 커스텀 로그 파일 설정
resources
에 <logger 이름>-spring.xml
의 이름을 갖는 파일을 생성하여 수정하면 된다.
예를 들어, logback
로거에 관련한 설정은 다음과 같이 커스터마이징 할 수 있다.
// logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<logger name="org.springframework.web" level="DEBUG"/>
</configuration>
2) 로거 변경
pom.xml
의 일부를 다음과 같이 수정한다.
여기서는 기존의 로거를 log4j2
로 변경한다.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
'더 나은 엔지니어가 되기 위해 > 지금은 안쓰는 자바' 카테고리의 다른 글
[스프링 부트 개념과 활용] 웹 MVC 설정 1. MessageConverters (0) | 2020.02.04 |
---|---|
[스프링 부트 개념과 활용] 테스트 (0) | 2020.02.04 |
[스프링 부트 개념과 활용] Profile (0) | 2020.02.03 |
[스프링 부트 개념과 활용] 외부 설정 (0) | 2020.02.02 |
[스프링 부트 개념과 활용] SpringApplication (0) | 2020.01.31 |