반응형
Logback이란?
- Java에서 가장 많이 사용되었던 로깅 라이브러리인 log4j의 후속 버전
- Log4j를 만든 개발자가 Log4j를 기반으로 더 빠른 속도와 더 적은 메모리 점유율 등의 성능을 개발하여 만든 Logging Framework
- LogBack Manual: http://logback.qos.ch/manual/index.html
Logback설정
appender :
- 로그를 어떤 방식으로 넣을 것인지 설정
- ConsoleAppender: 콘솔에 로그를 기록
- FileAppender: 파일에 로그를 기록
- RollingFileAppender: 여러 개의 파일을 순회하며 로그를 기록
- SMTPAppender: 로그를 메일로 기록
- DBAppender: 데이터베이스에 로그를 기록
Log Level :
- ERROR < WARN < INFO < DEBUG < TRACE
- 위 순서대로 하위 레벨을 포함시켜서 로그를 찍어준다 (이게 중요한 포인트)
- ERROR: 요청을 처리하는 중 오류가 발생한 경우 표시한다.
- WARN: 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지를 나타낸다.
- INFO: 상태변경과 같은 정보성 로그를 표시한다.
- DEBUG: 프로그램을 디버깅하기 위한 정보를 표시한다.
- TRACE: 추적 레벨은 Debug보다 훨씬 상세한 정보를 나타낸다.
Logger :
- 어떤 부분에서(name) 로그를 어떤 appender 로 넣어줄 것인지 설정
- logger name="com.dursuneryilmaz" 는 클래스 위치를 지정한다
- appender-ref ref="stdout" 는 appender에서 설정한 name 이다
- level을 통해 어디까지 보여줄 것인지 설정하는 부분이다
- root 는 글로벌 로거이며 저 녀석을 넣어주면 로그가 두번찍힐 수 있으므로 포함관계를 잘 파악하여 설정해야한다
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<!-- pattern -->
<property name="LOG_PATTERN" value="%-5level %d{yy-MM-dd HH:mm:ss}[%thread] [%logger{0}:%line] - %msg%n"/>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
${LOG_PATTERN}
</Pattern>
</layout>
</appender>
<!--
<logger name="org.springframework" level="DEBUG" >
<appender-ref ref="stdout"/>
</logger>
-->
<logger name="com.dursuneryilmaz" level="DEBUG" >
<appender-ref ref="stdout"/>
</logger>
<!--
<root level="INFO">
<appender-ref ref="stdout"/>
</root>
-->
</configuration>
Log출력(logger사용)하기
- 자바 컨트롤러에서 소스코드에서 로그를 출력하는 방법
- 아래 logger 관련된 import 추가
- private final Logger 추가
- logger.<loglevel>("log_test") 를 추가한다
- log출력 예제
// #1번
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@RestController
@RequestMapping("/api/v1/")
@CrossOrigin()
public class EmployeeController {
// #2번
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private IEmployeeService employeeService;
//get all employees
@GetMapping("/employees")
public List<Employee> getAll() {
// #3번
logger.trace("employ_list");
logger.debug("employ_list");
logger.info("employ_list");
logger.warn("employ_list");
logger.error("employ_list");
return employeeService.getAll();
}
}
반응형
'IT > DevOps' 카테고리의 다른 글
github access token발급 방법 (0) | 2021.09.09 |
---|---|
[쿠버네티스] 클러스터 설계 전략(클러스터 어떻게 나눌까?) (0) | 2021.09.01 |
[DevOps] CloudNative란? CNCF란? (0) | 2021.07.22 |
쿠버네티스 클라우드 서비스 비교(EKS/AKS/GKE) (0) | 2021.07.21 |
[트러블슈팅] Docker permission deny 해결법 (0) | 2021.07.01 |