12월 6일 금요일
AM 알고리즘 풀이
PM 과제 수행
Log
시스템의 이벤트, 사용자 활동, 네트워크 트래픽, 프로그램 동작 등등을 로그로 남긴다.
로그를 통해 디버깅일 가능하고 어느 라인에서 어느 로직이 문제가 발생했는지 확인이 가능하다.
또한 장애 원인을 판단하고 모니터링의 중요한 기반 자료가 된다.
스프링에서는 Slf4j로 로깅 프레임워크에 대한 추상 역할을 한다.
즉 Slf4j를 통해 로그를 생성 요청 하고 실제 생성 역할은 Log4j, Log4j2, Logback이 맡는다.
또한 Log4j, Log4j2, Logback는 모두 다른 장단점을 갖고 특징을 파악해 사용해야한다.
log4j2의 성능이 가장 우수하며 멀티스레드 환경에서는 더욱 더 성능 차이가 발생한다.
스프링 부트의 기본 로그 구현체는 logback이며
로그에는 레벨이 존재한다.
이를 사용하는 방법은 아래와 같다.
@Slf4j
public class Test {
public void test() {
log.trace("");
log.debug("");
log.info("");
log.warn("");
log.error("");
log.fatal("");
}
}
로그도 리소스를 소비한다.
로그 생성은 CPU와 디스크 I/O 리소스를 소모하기 때문에 테스트용 서버는 DEBUG, INFO 정도로 로그레벨을 설정한다.
로그 출력 시 수 배 가까이 시간차이가 나게 됩니다. 따라서 필요한 곳에서만 사용하는게 좋습니다.
log.info("User = " + user.toString()); // ❌ 권장되지 않는 방법
log.info("User = {}", user); // ✅ 권장
민감한 데이터는 로그로 남기면 안된다.
개인 정보 및 민감한 데이터는 해킹의 위험이 있다. 또한 개인 정보는 개인정보보호법에 의해 법적 문제가 생길 수 있으니 주의 해야합니다.
불필요한 DEBUG, INFO 로그
일시적인 테스트를 위해 추가하는 경우 확인이 끝났다면 지워야합니다.