2010-02-13 2 views
7

로깅 메커니즘을 사용해야하는 Java 응용 프로그램을 개발 중입니다. 그리고 지금 나는 자바 라이브러리 로거 중 하나를 선택하거나 Log4j 로거로 이동하는 것을 혼란 스럽다.java.util.logging 및 Log4j 로거 사용의 차이점

그래서 언제 자바 로거 에 갈 수 있는지 알고 싶습니다. 그리고 log4j 로거로 갈 수 있습니다.

답변

10

SLF4J 대신 특정 로깅 프레임 워크에서 응용 프로그램을 분리하는 것이 좋습니다. Jakarta Logging, JDK1.4 logging, log4j 등과 같은 다양한 로깅 프레임 워크를위한 어댑터가 있습니다. 로깅 요구 사항에 대한 좋은 추상화입니다.

+0

일단 SLF4J에 가면 LogBack을 log4j (동일한 작성자)의 향상된 버전으로 사용하십시오. – Verhagen

3

로거 클래스는 이전에 jdk에 포함되지 않았으므로 여러 라이브러리 구현이 나타납니다. Log4j 라이브러리는 가장 포괄적 인 로깅 유틸리티 세트 중 하나 (포매터, 어 펜더 등)를 가지고 있습니다. 그러나 대부분의 개발자에게는 이것은 과도한 것이므로 단순한 java.util.Logger로 충분할 것입니다.

저는 개인적으로 로거 구현보다 맞춤 래퍼를 사용합니다. 이를 통해 기능적 로깅/감사를 수행하는 사용자 지정 호출을 정의 할 수 있습니다.

+0

단순한 작업이라 할지라도 Log4j는'java.util.logging'보다 훨씬 바람직합니다. 이것은 평범하지 않습니다. – skaffman

+0

아마도 그렇지 않습니다! 내 동생의 친구 중 하나가 log4j 의존성으로 인해 실행되지 않는 과제를 보냈던 것을 기억합니다. 문제는 클래스 패스 때문이며, 그의 평론가는별로 감명을받지 못했다. 어떤 사람들은 배우기를 꺼려합니다. – questzen

+2

예, 고맙게도 형님의 친구의 숙제는 자바의 우수성과 우수성을 관리하지 않습니다. – skaffman

2

프로덕션 환경에서 코드를 다시 컴파일하지 않고 로깅 cfg를 조정할 때 Log4j가 더 유연하다는 것을 알았습니다.

+0

예, 저는 항상 기본 Java 로깅에 비해 log4j를 사용하도록 권합니다. 그런 다음 시동시에 결정을 내리는 것이 가능한 commons-logging을 발견했습니다. 어떤 것이 든간에 생산 표준 Java가 필요할 수도 있습니다. 개발 중에는 log4j의 유연성/성능이 있습니다. 하지만 요즘에는 더 이상이 두 패키지를 모두 사용하지 않을 것입니다! 내가 지금 사용할 것을 권고하는 패키지는 SLF4J (http://www.slf4j.org/)와 BackLog (http://logback.qos.ch/)입니다. – Verhagen

3

Apache Commoms Logging 프로젝트와 SLF4J이 있으며 둘 중 하나가 기본 로깅 라이브러리를 추상화합니다.

실제로 Log4J는 내장 된 로깅 클래스보다 사용하는 경향이 있습니다. 주로 Log4J는 애플리케이션 서버의 web-app별로 구성 될 수 있지만 JDK 로깅은 JVM별로 구성되기 때문입니다.

+0

Commons Logging은 심각한 클래스 경로 로더 문제점을 가지고있었습니다. 조심해. –

+0

특정 환경에서만 가능합니다. 대부분의 상황에서는 괜찮습니다. – skaffman

+1

실제로 commons-logging의 향상된 버전으로 SLF4J를 볼 수 있습니다. – Verhagen

3

로깅 API로 SLF4J를 사용하는 것이 좋습니다. 그런 다음 필요에 따라 검색 프레임 워크를 선택할 수 있습니다.

나는 현재 SLF4J를 시작하면서 모범 사례로 생각하고 간단한 "log to System.out"을 작성했다. http://runjva.appspot.com/logging101/index.html

잘하면 도움이됩니다.

관련 문제