2011-11-15 2 views
6

내 응용 프로그램에 Log4j를 사용 중이며 디버그 및 오류를위한 일부 애펜더가 있습니다. 나는 바람둥이에서 이것을 시험했고 잘 작동했다. 각각의 파일에 모든 로그를 생성합니다. 그러나 WAS6.1에 코드를 배치하면 모든 로그가 SystemOut.log 내부에서만 생성됩니다.Websphere 모든 로그가 SystemOut.log로갑니다.

도와주세요!

+0

몇 가지 코드를 첨부하면 좋을 것입니다. websphere를 사용하고 모든 로그를 별도의 로그 파일로 가져옵니다. –

+0

commons-logging과 같은 로깅 외관을 사용하고 있습니까? 그렇다면 클래스로드 순서를 상위 - 마지막으로 변경해야합니다. – szhem

+0

부모님이 마지막으로 할 필요는 없습니다. 다른 효과가 있으므로 가능하면 피해야합니다. – dbreaux

답변

8

WebSphere 6.1에서 내부적으로 JCL (Jakarta Commons Logging)을 사용하고 코드 또는 타사 라이브러리에서도 JCL을 사용하는 경우 WebSphere 구성이 log4j를 사용하려는 응용 프로그램과 충돌합니다. 이런 일이 발생하면보고있는 내용을 정확하게 볼 수 있습니다.

이 문제를 해결하는 방법을 설명하는 referencesblog posts이 여러 개 있습니다. 웹 애플리케이션의 META-INF/services 디렉토리 (WAR 아카이브의 루트에 있음)에 org.apache.commons.logging.LogFactory이라는 파일을 만드는 것이 가장 간단하다는 것을 알았습니다.

org.apache.commons.logging.impl.Log4jFactory 

(적어도는 WebSphere ... 새 버전의) 또 다른 핵심은 JCL 항아리는 log4j에 항아리와 같은 위치에서로드해야한다는 것입니다 :이 파일은 라인을 포함해야합니다. 예 : 두 라이브러리 모두 WEB-INF/lib 또는 둘 다에서 가져온다. 따라서 WebSphere 자체 제공 사본에서 JCL을로드 할 때 다시 폴백 할 수 없습니다. different classloaders에 의해로드 된 경우 서로 제대로 볼 수 없습니다.

관련 문제