2009-06-16 2 views
5

로깅을 위해 log4j를 사용하는 클라이언트에 배포되는 jar 파일이 있습니다. 제 질문은 jar 파일에 log4j.xml 구성을 포함 시키거나 로깅을 원한다면 클라이언트가 제공하도록해야합니까?클라이언트 jar의 log4j.xml

아파치 jar 파일은 모두 log4j 로깅과 함께 제공되기 때문에 log4j.xml 구성 파일 을 클라이언트 jar의으로 남겨 두는 것이 좋지만, log4j.xml에는 적용되지 않습니다.

답변

9

예, 그대로 사용하십시오. 앱의 60 개 타사 라이브러리 중 하나에 자체 라이브러리가 포함되어 있기 때문에 log4j 구성 파일을 무시할 때 완전히 불편합니다.

0

응용 프로그램에서 log4j를 사용하는 경우이를 프로젝트에 포함하십시오. 그렇지 않다면 왜 그걸 거기에 넣을까요? 클라이언트 A가 log4j 버전 1.2를 원하고 클라이언트 B가 log4j 버전 1.3을 원하면 어떻게 될까요?

프로젝트에 필요한 것을 결정하고 자신이 필요로하는 것에 대해 걱정하게하십시오.

+0

당신은 아마도 실제 log4j.jar 의존성을 언급하고있을 것이지만, 나는 log4j.xml 설정 파일에 대해 이야기하고있다. –

+0

아, 네, 미안 해요. 이 ABIS jar 파일에 대한 종속성이있는 여기 프로젝트가 있습니다. 이 ABIS jar 파일에는 고유 한 log4j.xml 구성 파일이 있습니다. 내 log4j 매개 변수는 가져온 ABIS jar 파일 (log level을 DEBUG 대신에 ERROR로 설정)에서 덮어 씁니다. 나는 그것을 밖으로두고 클라이언트가 그들의 것을 놓게 할 것이다. – amischiefr

5

log4j의 좋은 점은 항아리가 실제로 걱정할 필요가 없다는 것입니다. log4j에의 기본적인 사용 사례는 다음과 같습니다

  1. 는 당신이 운송하는 항아리가있는 경우 debug("some message");

로, 현재의 클래스

  • 전화가 로거의 방법 중 하나의 로거 객체를 가져옵니다 더 큰 응용 프로그램에서 사용하려면 위의 두 단계 만 수행하는 것이 이상적입니다. 이 방법으로 코드는 클라이언트 애플리케이션의 이미 구성된 log4j 인스턴스에서 로거 객체를 간단히 가져옵니다. 그런 다음 프로덕션 코드는 log4j를 구성하는 방법을 알지 못하도록 분리됩니다.

    jars의 개발을 위해 필요한 로깅은 unit test setUp() 메소드 또는 클라이언트로가는 프로덕션 코드와 함께 번들로 제공되지 않는 log4j 인스턴스를 구성하여 수행 할 수 있습니다.

  • 0

    구성 xml을 추가하고 다른 구성 및 옵션을 표시하는 사용자를위한 지침으로로드합니다. 이렇게하면 추가 로깅을 사용하는 데 도움이됩니다.

    +0

    그러면 클라이언트가 강제로 jar 파일의 내용을 편집합니다. 내가 그걸 모범 사례라고 확신하지 못한다. –

    2

    설명서에 클라이언트에게 유용 할 것으로 기대되는 기본 log4j 구성을 지정합니다. 이런 식으로 관심있는 사람들은 당신이 가지고있는 로깅 옵션을 볼 수 있습니다 (일반적으로 특정 클래스는 사용자 관점에서보다 흥미로운 로그 메시지를가집니다). log4j를 사용하는 써드 파티 라이브러리를 가지고 있고 문서가 없으며 로그 메시지가 화면을 가득 채우고 특정 로그 메시지를 사용 가능하게하거나 억제하는 방법을 알아 내려고 노력해야합니다.

    관련 문제