2012-01-02 3 views
4

Java EE 6 애플리케이션은 로깅 프레임 워크로 logback과 함께 slf4j를 사용합니다. 이제 OpenJpa의 SQL 추적을 내 로그 파일에 추가하려고합니다. WebSphere에서 slf4j로 OpenJPA 로깅

<property name="openjpa.Log" value="slf4j"/> 

내가 자바 EE 컨테이너 등은 WebSphere Application Server v8.0.0.1을 사용하십시오는 OpenJPA - 문서 내가이에 매개 변수를 사용할 수 있습니다 말한다. 응용 프로그램을 서버에 배포하면이 매개 변수가 변경되지 않습니다. WebSphere 관리 콘솔에서 로그 레벨을 변경할 수 있으며 정상적으로 작동합니다. 하지만 OpenJpa가 slf4j 프레임 워크에 로깅을 우회 할 수는 없습니다.

누구든지 이러한 구성을 사용하고 문제를 해결 했습니까?

btw. 정보 센터 - Article http://publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.nd.doc%2Finfo%2Fae%2Fae%2Ftejb_jpatroubleshoot.html 에 따르면 매개 변수가 무시되지만 모든 것이 가능해야합니다.

답변

0

해결했습니다.

  1. 이는 OpenJPA가 문을 로그온 할 말 :

    는 할 네 가지가 있습니다. 이는 persistence.xml의 등록 정보 항목에 의해 수행됩니다.

  2. Jul에서도 로그를 가져와야한다고 Slf4j가 말합니다. 이것은 SLF4J로 SLF4JBridgeHandler를 설치하여 수행 할 수 있습니다. 응용 프로그램 시작시 호출되는 ServletContextListener를 통해 브리지를 설치했습니다.
  3. JUL에서 모든 로그를 기록하지 않고 필요한 로그 만 기록하도록 로그백을 구성하십시오. 이 작업은 logBack-test.xml에 LevelChangePropagator를 추가하여 수행됩니다.
  4. WebSphere TraceService에게 OpenJPA의 로그를 응용 프로그램에 전달하도록 요청하십시오. 이것은 WebSphere 관리 콘솔의 설정입니다.
0

WAS 8.0에 포함 된 OpenJPA의 버전을 알 수 없습니다.

OpenJPA 1.x에는 "slf4j"를 사용할 가능성이 없습니다. 해결 방법은 응용 프로그램에는 OpenJPA 2.x에서 소스의 클래스 org.apache.openjpa.lib.log.SLF4JLogFactory을 복사하고 직접 사용 하였다

<property name="openjpa.Log" value="org.apache.openjpa.lib.log.SLF4JLogFactory"/> 

당신은 항상 직접 팩토리 클래스의 이름을 지정할 수 있습니다, 짧은 이름은 편의 트릭이다.

OpenJPA 2.x에는 SLF4JLogFactory이 있으므로 현재 설정으로 작동해야합니다. 다른 구성에 의해 무시되는 위치에 설정했을 수 있습니까? 예를 들어 EntityManagerFactory의 propertyMap을 통해 JPA를 구성하면 persistence.xml의 설정보다 우선합니다.

+0

답장을 보내 주셔서 감사합니다. 불행하게도 openjpa.Log 매개 변수는 Websphere 지속성 구현에서 무시됩니다. 기본 지속성 공급자 (com.ibm.websphere.persistence.PersistenceProviderImpl)를 사용하고 있으므로 제공된 데이터 소스를 사용할 수 있습니다. –

+0

내장 된 OpenJPA는 컨테이너 제공 데이터 소스를 사용할 수도 있습니다.이 기능이 없으면 쓸모가 없습니다. – MaDa