문제
로깅에 log4J를 사용하는 클라이언트에 배포 될 JAR 파일이 있습니다. 내 질문은 JAR 파일에 log4j.xml 구성을 포함시켜야합니까?
내 느낌은 log4j.xml 구성 파일을 남겨 두는 것입니다 밖으로 Apache Jar 파일에는 모두 Log4J 로깅이 있지만 Sans Log4J.xml이 포함되어 있으므로 클라이언트 항아리입니다.
해결책
예, 꺼내십시오. 앱의 60 개의 타사 라이브러리 중 하나에 자체가 포함되어 있기 때문에 Log4J 구성 파일이 무시 될 때 완전히 귀찮게합니다.
다른 팁
귀하의 경우 Log4J에 대한 좋은 점은 항아리가 실제로 그것에 대해 걱정할 필요가 없다는 것입니다. log4J의 기본 사용 사례는 다음과 같습니다.
- 현재 클래스의 로거 객체를 얻으십시오
- 해당 로거의 방법 중 하나를 호출하십시오.
debug("some message");
배송중인 항아리가 더 큰 응용 프로그램에서 사용하는 경우, 코드는 위에 나열된 두 단계 만 수행합니다. 이러한 방식으로 코드는 클라이언트 응용 프로그램에서 이미 구성된 LOG4J 인스턴스에서 단순히 로거 객체를 얻습니다. 그런 다음 생산 코드는 Log4J를 구성하는 방법을 알아야하는 데 분리됩니다.
단위 테스트 setup () 메소드에서 log4J 인스턴스를 구성하거나 클라이언트로 이동하는 프로덕션 코드와 번들로 번들리지 않는 유사한 내용을 구성하여 항아리 개발을 위해 볼 수있는 모든 로깅을 수행 할 수 있습니다.
문서에서 고객에게 유용 할 것으로 예상되는 기본 LOG4J 구성을 넣을 것입니다. 이런 식으로 관심있는 사람들은 당신이 가지고있는 로깅 옵션을 볼 수 있습니다 (일반적으로 특정 클래스는 사용자의 관점에서 더 흥미로운 로그 메시지가 있습니다). log4J를 사용하여 타사 lib가있을 때 성가신 것을 발견하고 문서화가 없으며 화면을 채우는 로그 메시지가 있으며 특정 로그 메시지를 활성화하거나 억제하는 방법을 알아 내려고 노력해야합니다.
응용 프로그램에서 log4j를 사용하는 경우 프로젝트에 포함시킵니다. 그렇지 않다면 왜 거기에 넣을 것인가? 클라이언트 A가 원하는 LOG4J 버전 1.2 및 클라이언트 B가 LOG4J 버전 1.3을 원한다면 어떻게해야합니까?
그들이 프로젝트에 필요한 것을 결정하고 당신이 필요로하는 것에 대해 걱정하게하십시오.
구성 XML을 추가하고 다른 구성 및 옵션을 표시하는 사용자를위한 명령어로로드합니다. 이를 통해 추가 로깅을 쉽게하거나 지원할 수 있습니다.