내 응용 프로그램에 Log4j를 사용 중이며 디버그 및 오류를위한 일부 애펜더가 있습니다. 나는 바람둥이에서 이것을 시험했고 잘 작동했다. 각각의 파일에 모든 로그를 생성합니다. 그러나 WAS6.1에 코드를 배치하면 모든 로그가 SystemOut.log 내부에서만 생성됩니다.Websphere 모든 로그가 SystemOut.log로갑니다.
도와주세요!
내 응용 프로그램에 Log4j를 사용 중이며 디버그 및 오류를위한 일부 애펜더가 있습니다. 나는 바람둥이에서 이것을 시험했고 잘 작동했다. 각각의 파일에 모든 로그를 생성합니다. 그러나 WAS6.1에 코드를 배치하면 모든 로그가 SystemOut.log 내부에서만 생성됩니다.Websphere 모든 로그가 SystemOut.log로갑니다.
도와주세요!
WebSphere 6.1에서 내부적으로 JCL (Jakarta Commons Logging)을 사용하고 코드 또는 타사 라이브러리에서도 JCL을 사용하는 경우 WebSphere 구성이 log4j를 사용하려는 응용 프로그램과 충돌합니다. 이런 일이 발생하면보고있는 내용을 정확하게 볼 수 있습니다.
이 문제를 해결하는 방법을 설명하는 references과 blog 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에 의해로드 된 경우 서로 제대로 볼 수 없습니다.
몇 가지 코드를 첨부하면 좋을 것입니다. websphere를 사용하고 모든 로그를 별도의 로그 파일로 가져옵니다. –
commons-logging과 같은 로깅 외관을 사용하고 있습니까? 그렇다면 클래스로드 순서를 상위 - 마지막으로 변경해야합니다. – szhem
부모님이 마지막으로 할 필요는 없습니다. 다른 효과가 있으므로 가능하면 피해야합니다. – dbreaux