2015-02-05 1 views
0

LOG4J2 v2.1을 사용하여 각각 2 개의 Java EE 애플리케이션 EAR1 및 EAR2에 대해 별도의 로깅 파일 EAR1.log 및 EAR2.log를 유지해야한다는 요구 사항이 있습니다. 인터넷을 통해 가면 LOG4J v1.x에 대한 도움말을 볼 수 있지만 LOG4J2에 대해서는 찾을 수 없습니다.LOG4J2를 사용하여 별도의 로깅

EAR1 ("EAR1-log4j2.xml"를 사용합니다) :

1. Web project “web1” 
2. EJB project “ejb1” 
3. Java project “java1” 
4. Java project “java2” 
5. Java project “java3” 

EAR2 ("EAR2-log4j2.xml"를 사용합니다) :

1. Web project “web2” 
2. EJB project “ejb2” 
3. Java project “java1” (same as above) 
4. Java project “java2” (same as above) 
5. Java project “java3” (same as above) 

http://logging.apache.org/log4j/2.x/manual/migration.html http://logging.apache.org/log4j/2.x/manual/logsep.html

현재 작동중인 항목 :,451,515,내 log4j2.xml가에는 ApplicationServer 클래스 경로에 위치 & 단일 로그가 성공적으로 모두 EAR의에 대한 별도의 로그 파일을 유지하는 EAR의 두

내 완료 시도를 위해 작성지고 : web.xml을 수정 • 만에 로깅 변경 사항을 적용 웹 프로젝트 만 I • 다음 코드를했지만, 이것은 내가 혼자 log4j2.xml을 편집하여이 요구 사항을 완료 할 수 있는지 확인하기 위해 노력하고있어

LoggerContext loggerCtx = Configurator.initialize("mrpst", null, PathOfMyLog4j2XmlPath); 
        Logger log = loggerCtx.getLogger("MyClassName"); 

(코드 변경없이 단지 현재의 클래스에 적용). 문서 링크가 제공 될 수 있는지 또는 다른 접근법에 감사드립니다.

+0

어떤 응용 프로그램 서버를 사용하고 있습니까? 즉 Websphere, JBoss, Weblogic, Glassfish가 있습니다. –

+0

@Paul, 우리는 Websphere Application Server 8.0.0.8을 사용하고 있습니다. 사용되는 종속 항아리는 log4j-api/core/web 버전 2.1 – Anudeep

+0

입니다. EAR 패키지의 주요 차이점이있는 경우 각 패키지 구조에 대해 두 개의 Appender와 두 개의 Logger를 생성 할 수 있습니다. –

답변

0

제 제안은 로그 이벤트에 컨텍스트를 삽입하고 적절한 애펜더에게 지시하는 로그 작성기 경로를 사용하여 해당 컨텍스트를 필터링하는 것입니다. 당신의 log4j2.xml의 설정에서

String routeKey = SOME_FIELD_THAT_IDENTIFIES_CONTAINER; 
ThreadContext.put("myEARroute", routeKey); 

: 로깅의 시점에서

<RollingRandomAccessFile 
    name="myEAR1Appender" 
    filename="logs/Ear1.log" 
    <!-- fill in the rest of your appender config, as desired --> 
</RollingRandomAccessFile> 

:

이제
<Routing name="myEARroute"> 
    <Routes pattern="$${ctx:myEARroute}"> 
     <!-- if you forget to inject context, the routing key will be empty --> 
     <Route 
      key="$${ctx:myEARroute}" 
      ref="STDOUT" /> 
     <Route 
      key="EAR1" 
      ref="myEAR1Appender" /> 
     <Route 
      key="EAR2" 
      ref="myEAR2Appender" /> 
    </Routes> 
</Routing> 

당신은 당신의 펜더 이름을 일치 펜더를 만들어야합니다 다른 appenders를 위해 반복하십시오.

+0

다른 연락 방법이 없으므로이 답변에 대해 의견을 제시해야합니다. 투표에 실수를하거나 추가 할 사항이 있으면 게시물을 편집하는 대신 내 게시물에 댓글을 남길 수 있습니다. 게시물의 의미를 변경하는 편집은 검토를 통과하지 못하므로 2k에 도달하면 완전히 확신 할 수 있습니다. 제안 된 편집 내용은 RegEx room에 메시지를 남기거나 내 게시물 아래에 의견을 남기고 거기에서 의논하십시오. – nhahtdh

+0

정보를 제공해 주셔서 감사합니다. 분명히 규칙에 새로운. :) 당신의 대답에 대한 잘못된 클릭에 대한 설명의 방법으로, FF는 모두 검은 색으로 변했고 무작위로 클릭하여 비디오 드라이버를 다시 렌더링하려고 시도했습니다. 어떤 탭이 활성 상태 였는지 알 수 없었고 FF가 작동을 멈추고 다시 시작될 때 나는 다운 - 득표를 한 것을 보았습니다. 도 오! –