2015-01-12 1 views
0

WEB, EJB 및 JPA의 3 개 모듈/프로젝트로 구성된 EAR ​​프로젝트가 있습니다. 웹 프로젝트에서 로깅을 위해 log4j2를 추가했습니다. 따라서 WebContent/WEB-INF/direcotry에 log4j2.xml 파일을 넣었습니다.Glassfish에 log4j2가있는 프로젝트가 두 개 더 있음

이제 두 가지 프로젝트 (개발자 버전과 테스트 버전)를 만들었습니다. 프로젝트 이름이 주로 다릅니다. 또한 log4j2.xml 파일에서 로그를 쓸 다른 파일 위치를 구성합니다.

하나의 프로젝트 (예 : 개발자 버전) 만 배포하면 모든 것이 정상적으로 작동합니다. 그러나 두 프로젝트를 배포 할 때 둘 다 동일한 파일에 로깅합니다 (항상 먼저 배포 된 프로젝트의 log4j2에 구성된 파일입니다). 글래스 피쉬 버전은 3.1.2.2이고 Log4j2 버전은 2.0.2입니다.

해결 방법은 무엇입니까?

답변

0

log4j2 설명서는 configuration for web applications에 대한 세부 정보가 있습니다.

log4j2 jar 파일도 WebProject1/WEB-INF/lib 및 WebProject2/WEB-INF/lib 폴더 (일부 공유 위치가 아님)에도 있습니까? 그런 식으로 log4j2 클래스는 별도의 webapp 클래스 로더에 의해로드되고 별도의 구성을 가질 수 있습니다.

+0

라이브러리는 WebProject1/WEB-INF/lib 및 WebProject2/WEB-INF/lib에 있습니다. 또한 glassfish/domains/domain1/lib에 log4j2 라이브러리가 있습니다. glassfish/domains/domain1/lib 디렉토리에서 libs를 제거하면 문제가 해결됩니다. 그러나, 내가 몇 가지 배포 후 나는 여기에 설명 된 PerGen 오류 : [ "java.lang.OutOfMemoryError : 상대방 공간"오류] (http : // stackoverflow)을 얻을 때 glassfish/domains/domain1/lib에 log4j2 라이브러리를 보관하지 않으면 .com/questions/88235/deal-with-java-lang-outofmemoryerror-permgen-space-error) – Szarpul

+0

흠 ... glassfish/domains/domain1/lib 디렉토리에서 log4j2 라이브러리를 제거하는 것이 별도의 작업을 허용하는 유일한 방법이라고 생각합니다. 별도의 웹 앱 구성. 당신은 당신이 연결된 StackOverflow 질문에 언급 된 PermGen 공간 오류에 대한 해결책을 시도 했습니까? –

+0

그래, 나는'-XX : + CMSClassUnloadingEnabled -XX : + CMSPermGenSweepingEnabled'을 jvm 옵션에 추가했지만 아무 것도 변경되지 않았습니다. 프로파일 러는 여전히 증가하는 PermGen 메모리 크기 및 클래스 수를 보여줍니다. 임 : "GF memory leak error"(http://www.franke.ms/#glassfish-memory-leak.wiki)와 같이 "죽은 암소"를 발견하기 위해 노력하고 있습니다. 글래스 피시 도메인 libs 디렉토리에 log4j2 항아리를 넣는 것은 해결책 이었지만, 두 개의 프로젝트가 있기 때문에 다른 것을 찾아야한다는 것을 알고 있습니다. – Szarpul