JoJun's
Jun's Devlog
JoJun's
전체 방문자
오늘
어제
  • 분류 전체보기 (51)
    • Java (16)
      • SpringBoot (12)
      • Java (4)
    • Linux (11)
      • CentOS (4)
      • 명령어(CentOS) (5)
      • Docker (2)
    • DataBase (15)
      • 튜닝 기법 (1)
      • MSSQL (7)
      • SQLD,SQLP (6)
    • 알고리즘 (4)
      • 정렬 (1)
      • 해시 (1)
      • 완전탐색 (1)
      • 탐욕법 (1)
    • 인프라 (3)
    • Web (2)
    • 개인공간 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • cors
  • log4j2
  • @Component
  • MSSQL
  • 알고리즘
  • Dockerfile
  • Java
  • 파일그룹
  • docker
  • springboot

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
JoJun's

Jun's Devlog

JUL (java.util.logging) vs Log4j2 vs SLfj2 비교하기.
Java/Java

JUL (java.util.logging) vs Log4j2 vs SLfj2 비교하기.

2023. 12. 7. 14:51
728x90
반응형

java.util.logging, log4j2, 그리고 Slf4j는 Java 언어에서 로깅을 위한 여러 라이브러리 및 프레임워크입니다. 

● java.util.logging (JUL)

Java 표준 로깅 API: JDK에 내장된 기본 로깅 프레임워크입니다.
장점:
         표준 Java API이기 때문에 JDK에 내장되어 있어 추가적인 라이브러리의 의존성이 없습니다.
         자바 표준이므로 Java SE 환경에서 쉽게 사용할 수 있습니다.
단점:
        유연성이 부족하며, 고급 로깅 설정이 제한적입니다.
        포맷팅과 필터링 등의 기능이 다른 라이브러리에 비해 부족합니다.

 

● Log4j2

강력하고 유연한 로깅 프레임워크: Apache Software Foundation에서 개발한 로깅 라이브러리로, 많은 고급 기능을 제공합니다.
장점:
         다양한 로깅 기능과 유연한 설정을 제공하여 복잡한 로깅 요구 사항을 해결할 수 있습니다.
         성능이 뛰어나며, 다양한 로깅 레벨과 출력 형식을 지원합니다.
단점:
         라이브러리의 크기가 상대적으로 크고, 설정이 복잡할 수 있습니다.

● Slf4j (Simple Logging Facade for Java)

로깅 추상화 계층: 실제로 로그를 기록하는 구현은 Slf4j를 구현한 백엔드로 지정할 수 있습니다.
장점:
         로깅 인터페이스를 추상화하여 다양한 로깅 프레임워크에 대한 유연한 대응이 가능합니다.
         로깅 인터페이스의 추상화로 인해 코드의 종속성을 줄일 수 있습니다.
단점:
         기본적으로는 단순한 로깅 인터페이스를 제공하므로 고급 로깅 기능은 다른 라이브러리에 의존합니다.

● 비교 및 팁


○  선택 기준

  • java.util.logging: 기본적인 Java SE 환경에서 사용할 때.
  • Log4j2: 복잡한 로깅 요구 사항이 있을 때 또는 성능이 중요한 상황에서.
  • Slf4j: 로깅 라이브러리를 추상화하여 유연성을 필요로 할 때.

○  성능 기준

  • java.util.logging: 가벼움.
  • Log4j2: 뛰어난 성능을 제공.
  • Slf4j: 로깅 인터페이스의 추상화로 인해 성능은 백엔드에 따라 다를 수 있음.

○ 유연성 기준

  • java.util.logging: 제한적.
  • Log4j2: 매우 높은 유연성을 제공.
  • Slf4j: 로깅 라이브러리에 대한 유연한 대응 가능.


○ 사용 시나리오

단순한 로깅이 필요한 경우에는 java.util.logging 또는 Slf4j가 적합할 수 있습니다.
고급 로깅 기능이 필요한 경우에는 Log4j2를 고려할 수 있습니다.
추가로, Slf4j는 로깅 라이브러리를 추상화한 역할을 하므로, 프로젝트에서는 Slf4j를 사용하고 필요에 따라 실제 로깅 라이브러리를 바꿀 수 있는 구조를 만들어두는 것이 좋습니다.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Java' 카테고리의 다른 글

[Java] InvalidKeyException AES 256 암호화 에러  (0) 2022.02.10
[Java] Log4j 원격코드실행 이슈 JNDI injection  (0) 2021.12.30
[Java] CheckedException과 UncheckedException이야기  (0) 2021.12.30
    'Java/Java' 카테고리의 다른 글
    • [Java] InvalidKeyException AES 256 암호화 에러
    • [Java] Log4j 원격코드실행 이슈 JNDI injection
    • [Java] CheckedException과 UncheckedException이야기
    JoJun's
    JoJun's
    JoJun's의 기술블로그

    티스토리툴바