SLF4J (Simple logging facade for java)
다양한 로킹 프레임워크에 대한 간단한 Facade 또는 추상화 역할을 하여 최종 사용자가 배포시 원하는 로깅 프레임워크를 사용할 수 있도록 한다.
Logback
다양한 Logging framework 중 하나.
1. 로그 레벨
- error > warn > info > debug > trace
- error : 요청 처리 중 문제가 발생.
- warn : 프로그램 실행은 문제 없지만, 향후 문제가 일으킬 수 있다.
- info : 정보성 메시지.
- debug : 개발 시 디버그 용도로 사용.
- trace : 좀 더 상세한 이벤트를 나타낼 때 사용.
2. Logback 설정 및 사용
- https://mvnrepository.com/ 에서 slf4j, logback classic module 검색.
- 각 버전 선택 후 .jar 내려받아서 lib에 추가.
- resources안에 logback.xml 파일 생성 후 설정.
(logback을 이용하면 appender 별로 로그 레벨을 설정해 주거나, 일정 기간이 지난 로그 파일을 지우고나, 로그의 용량을 제한하는 등의 다양한 기능을 사용할 수 있다.)
- %data : 로깅 발생 날짜
- %thread : 현재 Thread명
- %-5level : 로그 레벨 (5글자)
- %msg : 로깅 메시지
더보기
<configuration>
<!-- 파일로 출력 -->
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>myApp.log</file>
<encoder>
<pattern>%date [%thread] %level %logger{10} [%file:%line] - %msg%n</pattern>
</encoder>
</appender>
<!-- 표준 출력 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- debug 레벨 설정 -->
<root level="debug">
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>
log 찍어서 logback 적용 테스트
더보기
public class MyLogback {
private static final Logger logger = LoggerFactory.getLogger(MyLogback.class);
public static int sum(int a, int b) {
logger.trace("테스트 용 = {}, {}", a, b);
logger.info("덧셈 연산 수행 : {} + {}", a, b);
return a+b;
}
public static int divide(int a, int b) {
if(b == 0) {
logger.warn("덧셈 연산 실패.. 0으로 나눌 수 없음");
throw new ArithmeticException("0으로 나눌 수 없습니다.");
}
return a/b;
}
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(sum(a, b));
System.out.println(divide(a, 0));
}
}
실행 결과
15:35:27.766 [main] INFO com.nhnacademy.edu.MyLogback - 덧셈 연산 수행 : 1 + 2
3
15:35:27.768 [main] WARN com.nhnacademy.edu.MyLogback - 덧셈 연산 실패.. 0으로 나눌 수 없음
Exception in thread "main" java.lang.ArithmeticException: 0으로 나눌 수 없습니다.
at com.nhnacademy.edu.MyLogback.divide(MyLogback.java:18)
at com.nhnacademy.edu.MyLogback.main(MyLogback.java:28)
Logback on Maven
- pom.xml
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>
- use
@Slf4j
public class RequestServlet extends HttpServlet {
// ...
cache(IOException ex){
log.error("exception : {}", ex);
}
// ...
}
- Delombok
private static final Logger log = org.slf4j.LoggerFactory.getLogger(RequestServlet.class);
출처: https://github.com/nhnacademy-bootcamp/java-dev-settings/tree/main/docs/05.logging
'Java' 카테고리의 다른 글
[Java] String, StringBuilder, StringBuffer (1) | 2024.10.06 |
---|---|
[Java] Java에서의 Stream (스트림) (0) | 2024.09.12 |
[Java] Maven (메이븐) (2) | 2024.09.11 |
[Java] 14. Collections Framework (0) | 2024.09.02 |
[Java] 13. Anotation(어노테이션) (0) | 2024.09.02 |