IT

log4j2와 함께 slf4j를 사용할 가치가 있습니까?

lottoking 2020. 8. 28. 19:39
반응형

log4j2와 함께 slf4j를 사용할 가치가 있습니까?


slf4j를 log4j2와 함께 사용할지 여부를 선택할 수 없습니다. 온라인 게시물에 따르면 성능이 많이 보이지만 실제로는 필요합니다.

또한 다음 포인트는 log4j2를 선호합니다.

  • SLF4J는 애플리케이션이 암호화를 기록합니다. Log4j 2 API는 텍스트를 로깅하려는 경우 모든 CharSequence 로깅을 지원하지만 모든 개체를 로깅하는 것도 지원합니다.
  • Log4j 2 API는 메시지 개체 로깅, Java 8 람다 식 및 가비지없는 로깅을 지원합니다 (vararg 배열 생성을 방지하고 CharSequence 개체 로깅시 공유 생성 방지).

계속하십시오 : slf4j 대신 log4j2 API로 프로그램하십시오.

안전합니다 : Log4j2 API는 slf4j와 똑같은 보증을 제공합니다.

이제 Log4j2 자체가 API와 구현 모듈로 분리 된 SLF4J를 사용하는 데 더 이상 가치가 없습니다.

예, 옵션을 열어 두는 것이 좋은 엔지니어링 관행입니다. 나중에 다른 로깅 구현으로 설명 수 있습니다.

지난 10 년 동안 애플리케이션에서 유연성을 구축하고 SLF4J와 같은 래퍼 API를 사용했습니다. 하지만 유연성은 무료로 제공되지 않습니다. 접근 방식의 단점은 애플리케이션이 기본 로깅 라이브러리의 더 기능 세트를 사용할 수 있습니다.

Log4j2는 애플리케이션이 최소 공통 분모로 제한 될 필요가없는 솔루션을 제공합니다.

이스케이프 : log4j-to-slf4j

Log4j2에는 log4j-to-slf4j브리지 모듈이 포함됩니다 . Log4j2 API에 대해 코딩 된 모든 애플리케이션은 애플리케이션 지원 구현을 slf4j 호환 구현으로 전환 선택할 수 있습니다.

log4j에서 slf4j로

질문에서 언급했듯이 Log4j2 API를 사용하면 더 많은 기능을 더 많은 기능을 직접 제공하고 slf4j와 같은 래퍼 API를 사용하는 것에 비해 비 기능적 이점이 있습니다.

  • 메시지 API
  • 지연 로깅을위한 Lambda
  • 대신 모든 개체 기록
  • 가비지 프리 : 가능한 경우 varargs 또는 고급 생성을 피하십시오.
  • CloseableThreadContext는 항목 사용이 MDC에서 항목을 자동으로 제거합니다.

(자세한 내용 은 SLF4J 에서 사용할 수있는 10 개의 Log4j2 API 기능 을 참조하십시오.)

애플리케이션은 기본 제공 Log4j2 코어 구현에 고정되지 않은 서비스 Log4j2 API의 기본 기능을 사용할 수 있습니다.

SLF4J는 여전히 안전하며, 애플리케이션이 더 이상 SLF4J API에 대해 코딩해야한다는 의미는 아닙니다.


공개 : Log4j2에 기여합니다.


업데이트 : Log4j2 API에 대한 프로그래밍이 어떻게 든 "파사드를위한 외관"을 도입한다는 것입니다. 이 점에서 Log4j2 API와 SLF4J 사이에는 차이가 없습니다.

두 개의 API 모두 구현을 사용하는 경우 2 개의 포함이 필요하고 외장가 구현의 경우 4 개의 경우가 필요합니다. SLF4J와 Log4j2 API는이 점에서 동일합니다. 예를 들면 :

SLF4J Log4j 2 API의 필수 및 유사합니다.

참고 URL : https://stackoverflow.com/questions/41498021/is-it-worth-to-use-slf4j-with-log4j2

반응형