728x90
오늘은 Spring Boot 에서 Logback 사용법에 대해 간략히 소개하겠습니다.
1. Logback 이란?
- Logback 이란 SLF4J 의 구현체로, 스프링 부트의 기본으로 설정되어 있어 별도의 라이브러리를 추가할 필요 없습니다. 아래 패키지에 포함되어 있어 기본적으로 사용이 가능합니다.
implementation 'org.springframework.boot:spring-boot-starter'
2. Logback 설정파일
- application.yml 파일에 직접적으로 경로를 지정하지 않았다면 resources 디렉토리에 logback-spring.xml 파일을 참조하게 됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- Spring Boot 프로퍼티 참조를 위해 <springProperty> 추가 -->
<springProperty scope="context" name="spring.log.file-path" source="spring.log.file-path"/>
<property name="CONSOLE_LOG_PATTERN" value="%boldMagenta(%d{MM-dd HH:mm:ss}) [%boldYellow(%-5level)] %cyan(%logger{5}.%M) - %msg %n" />
<property name="FILE_LOG_PATTERN" value="%d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %5level %logger - %msg%n" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${spring.log.file-path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${spring.log.file-path}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
<maxHistory>90</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<ImmediateFlush>true</ImmediateFlush>
</encoder>
</appender>
<logger name="org.mybatis" level="DEBUG" />
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>
- 콘솔과 파일에 찍히는 로그 포맷을 각각 지정하여 줍니다.
3. application.yml 설정
- 위에 보이는 ${spring.log.file-path} 를 사용하기 위해서는 application.yml 파일에 프로퍼티를 입력하여야 하고 <springProperty> 태그를 추가하여야 합니다.
spring:
config:
activate:
on-profile: "local"
log:
file-path: D:\logs\qrcode\qrcode.log
---
spring:
config:
activate:
on-profile: "prod"
log:
file-path: /home/logs/qrcode/qrcode.log
4. log 사용
- log를 사용하실땐 Logger 를 직접 작성하시거나 @Slf4J 어노테이션을 사용하시면 됩니다.
// LoggerFactory 사용
@Controller
public class QrCodeController {
private final Logger log = LoggerFactory.getLogger(getClass());
@GetMapping(value = {"/main", "/index", "/"})
public String userMain(final Model model) {
log.info("로그테스트");
log.error("로그테스트 err");
return "/views/index";
}
}
또는
// @Slf4j 사용
@Controller
@Slf4j
public class QrCodeController {
@GetMapping(value = {"/main", "/index", "/"})
public String userMain(final Model model) {
log.info("로그테스트");
log.error("로그테스트 err");
return "/views/index";
}
}
감사합니다.
728x90
'프레임워크 > SpringBoot' 카테고리의 다른 글
[SpringBoot] JAR 파일 서버 배포 (0) | 2024.05.20 |
---|---|
[SpringBoot] Error 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16MSWIN949 (0) | 2024.05.20 |
[SpringBoot] Redis 연동하기 (0) | 2024.05.14 |
[SpringBoot] TextWebSocketHandler 내부에서 HttpSession 사용하기 (0) | 2024.05.14 |
[SpringBoot] Mybatis Batch Update (1) | 2024.02.08 |