log4j vs logback
자작 포장지 뒤에 log4j를 사용하고 있습니다.우리는 이제 그것의 기능을 더 많이 사용할 예정입니다.
로그백으로 업데이트하시겠습니까?
(SLF4J와 같은 외관이 아닌 틀)
Logback은 기본적으로 SLF4J API를 구현합니다.즉, 로그백을 사용하는 경우 실제로는 SLF4J API를 사용하고 있습니다.이론적으로 로그백 API의 내부를 로깅에 직접 사용할 수 있지만 이는 매우 권장되지 않습니다.로거에 관한 모든 로그백 문서와 예는 SLF4J API로 기술되어 있습니다.
따라서 로그백을 사용하면 실제로 SLF4J를 사용할 수 있습니다.어떤 이유로든 log4j로 다시 전환하려면 slf4j-log4j12.jar를 클래스 경로에 드롭하기만 하면 됩니다.
logback에서 log4j로 이행할 때 logback.xml 구성 파일에 포함된 특정 부분, 특히 logback4j.properties로 이행해야 합니다.다른 방향으로 이행하는 경우 log4j 구성(log4j.properties 등)을 해당 로그백으로 변환해야 합니다.그것을 위한 온라인 툴이 있습니다.컨피규레이션파일의 이행에 수반하는 작업의 양은, 소프트웨어의 모든 소스 코드와 그 의존성에 분산된 로거 콜의 이행에 필요한 작업보다 훨씬 적게 됩니다.
그래야 하나요?네, 그렇습니다.
왜요? Log4J는 Logback에 의해 기본적으로 사용되지 않습니다.
급한 일인가요?아닐 수도 있어요.
통증이 없나요?그럴 수도 있지만 로그 스테이트먼트에 따라 다를 수 있습니다.
LogBack(또는 SLF4J)을 최대한 활용하려면 적절한 로깅 문을 작성해야 합니다.이렇게 하면 평가가 느리기 때문에 코드가 빨라지고 가드를 피할 수 있기 때문에 코드 행이 적어지는 등의 이점이 있습니다.
마지막으로 SLF4J를 강력히 추천합니다.(왜 바퀴를 자신의 정면으로 재현합니까?)
로깅 세계에는 Facades(Apache Commons Logging, slf4j 또는 Log4j 2.0 API 등)와 구현(Log4j 1 + 2, java.util.logging, TinyLog, Logback)이 있습니다.
기본적으로는 당신이 직접 만든 포장지를 slf4j IF로 교체하고 어떤 이유로든 마음에 들지 않는 경우에만 교환해야 합니다.Apache Commons Logging은 사실 현대적인 API를 제공하지 않지만 slf4j와 새로운 Log4j 2 파사드가 그것을 제공하고 있다.많은 앱이 slf4j를 래퍼로 사용하고 있기 때문에 그것을 사용하는 것이 타당할지도 모릅니다.
slf4j는 slf4j docs의 다음 예시와 같이 다수의 API 설탕을 제공합니다.
logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
가변 치환입니다.이는 Log4j 2에서도 지원됩니다.
단, slf4j는 QOS에 의해 개발되어 로그백도 유지된다는 점에 유의해야 합니다.Log4j 2.0은 Apache Software Foundation에서 작성됩니다.지난 3년 동안 활기차고 활발한 커뮤니티가 그곳에서 다시 성장했다.Apache Software Foundation이 제공하는 Open Source에 대한 모든 보증과 함께 감사할 경우 Log4j 2를 직접 사용하는 것에 찬성하는 slf4j 사용을 재고할 수 있습니다.
주의:
과거 log4j 1은 Logback이 활성화되어 있는 동안 유지보수가 되지 않았습니다.하지만 오늘은 상황이 다르다.Log4j 2는 액티브하게 유지 보수되고 있으며 거의 정기적으로 출시됩니다.또한 최신 기능을 많이 포함하고 있으며 -imho-는 Logback보다 몇 가지 더 나은 기능을 제공합니다.이것은 때때로 단지 취향의 문제일 뿐이므로 당신은 스스로 결론을 내려야 한다.
Log4j 2.0의 신기능에 대한 간단한 개요를 작성했습니다.http://www.grobmeier.de/the-new-log4j-2-0-05122012.html
Log4j 2는 Logback뿐만 아니라 다른 로깅 프레임워크에서도 영감을 얻었음을 알 수 있습니다.그러나 코드 베이스는 다릅니다.Log4j 1과 공유되는 것은 거의 없습니다.Logback과 공유되는 것은 제로입니다.이를 통해 Log4j 2의 경우 후드 아래의 스트링 대신 바이테스트림을 사용하여 작동하도록 개선되었습니다.또한 재구성 중에 이벤트가 손실되지 않습니다.
Log4j 2는 제가 알고 있는 다른 프레임워크보다 빠른 속도로 로그가 가능합니다.http://www.grobmeier.de/log4j-2-performance-close-to-insane-20072013.html
사용자 커뮤니티는 Logbacks보다 훨씬 큰 것 같습니다.http://www.grobmeier.de/apache-log4j-is-the-leading-logging-framework-06082013.html
가장 좋은 아이디어는 달성하고자 하는 것에 가장 적합한 로깅 프레임워크를 선택하는 것입니다.프로덕션 환경에서 로그인을 사용하지 않고 앱에서 기본 로그만 수행할 경우 전체 프레임워크를 전환하지 않습니다.그러나 로깅을 좀 더 많이 수행할 경우 프레임워크와 개발자가 제공하는 기능을 살펴보십시오.QOS를 통해 Logback에 대한 상업적 지원을 받을 수 있지만 Log4j 2에 대한 상업적 지원은 현재 없습니다.한편, 감사 로깅을 실시할 필요가 있어 비동기 부록에 의해 제공되는 고성능이 필요한 경우 log4j 2를 체크하는 것이 매우 적합합니다.
그들이 제공하는 모든 편안함에도 불구하고, 파사드는 항상 약간의 퍼포먼스를 제공합니다.전혀 영향을 미치지 않을 수도 있지만, 리소스가 부족할 경우 가능한 모든 것을 저장해야 할 수도 있습니다.
요건을 파악하지 않으면 추천을 하는 것은 거의 불가능합니다.그냥: 많은 사람들이 바꾼다고 해서 바꾸지는 마세요.값이 표시되므로 전환합니다.log4j가 죽었다는 주장은 더 이상 중요하지 않습니다.살아있고 뜨겁습니다.
면책사항: 저는 현재 Apache Logging Services의 VP로 log4j에도 관여하고 있습니다.
당신의 질문에 대한 정확한 답변은 아니지만, 만약 당신이 직접 만든 포장지에서 멀리 떨어진다면, Hibernate가 (공통 로그 대신) 전환한 Simple Logging Passide for Java(SLF4J)가 있습니다.
SLF4J는 Jakarta Commons Logging(JCL)에서 볼 수 있는 클래스 로더의 문제 또는 메모리 누전 문제를 모두 겪고 있지 않습니다.
SLF4J는 JDK 로깅, log4j 및 logback을 지원합니다.따라서 적절한 타이밍에 log4j에서 logback으로 전환하는 것이 매우 쉬울 것입니다.
편집: 명확하게 설명하지 못한 항목.SLF4J를 사용하여 log4j와 logback 중 하나를 선택해야 하는 번거로움에서 벗어날 것을 제안했습니다.
결정은 다음 사항에 근거해야 합니다.
- 이러한 「더 많은 기능」을 실제로 필요로 하는 것.
- 변경 구현에 소요되는 예상 비용입니다.
API를 변경하고 싶은 충동을 억제해야 합니다.이것은 단지 「새로운 것, 빛나는 것, 좋은 것」이기 때문입니다.나는 "고장나지 않았다면 발로 차지 말라"는 방침을 따르고 있다.
응용 프로그램에 매우 정교한 로깅 프레임워크가 필요한 경우 그 이유를 고려할 수 있습니다.
성숙된 프로젝트나 개발 단계 깊숙이 들어가는 프로젝트는 이러한 업그레이드를 통해 얻을 수 있는 것보다 훨씬 더 느슨해질 수 있습니다. IMHO. 로그백은 확실히 일련의 포인트에서 훨씬 더 진보되어 있지만, 현용 시스템에서 완전히 교체할 정도는 아닙니다.새로운 개발을 위해 로그백을 검토하는 것은 확실하지만, 기존 log4j는 이미 출시되어 최종 사용자를 만난 모든 것에 충분하고 성숙합니다.이것은 매우 주관적입니다.비용이 드는 것을 알 수 있습니다.
언급URL : https://stackoverflow.com/questions/178215/log4j-vs-logback
'programing' 카테고리의 다른 글
Laravel API - 페이지를 새로고침한 직후에 인증이 동작합니다. (0) | 2022.07.10 |
---|---|
경고: 내장 함수 'xyz'에 대한 호환되지 않는 암묵적 선언입니다. (0) | 2022.07.10 |
Vue CLI Favicon (0) | 2022.07.10 |
간단한 Vue.js 앱을 비 Vue 웹 사이트에 위젯으로 포함하려면 어떻게 해야 합니까? (0) | 2022.07.10 |
vuex 작업에 대한 페이로드로 FormData (0) | 2022.07.10 |