2011-09-30 6 views
0

Java에서 XSLT 변환을 수행하기 위해 SaxonJ를 사용하고 있습니다.log4j로 xsl : message 리디렉션

내 변환 논리가 복잡하기 때문에 내 XSLT 파일에서 디버그/정보를 출력으로 출력해야합니다.

로그 파일에 변환 정보가 저장되도록 log4j로 리디렉션 할 수있는 방법이 있습니까?

내 시스템은 이미 log4j를 사용하여 파일에 출력을 기록합니다. 변환 디버그 메시지도 추가하려고합니다.

아이디어가 있으십니까?

답변

1

나는 이것을 수행하는 방법을 이미 알고 있다고 확신한다. 그러나 제 대답이 다른 사람들에게 유용 할 수 있기를 바랍니다.

당신이 MessageListener 인터페이스를 구현하기 만 : http://www.saxonica.com/documentation/javadoc/net/sf/saxon/s9api/MessageListener.html

public class MessageListenerImpl implements MessageListener { 
    private static Logger logger = Logger.getLogger(MessageListenerImpl.class); 

    public void message(XdmNode content, boolean terminate, SourceLocator locator) { 
     if (terminate) { 
      logger.error(content.getStringValue()); 
      System.exit(1); 
     } else { 
      logger.warn(content.getStringValue()); 
     } 
    } 
} 
1

고유 한 Message emitter를 구성 할 수 있습니다. 이 작업을 수행하는 다양한 인터페이스가 있습니다, 예를

http://www.saxonica.com/documentation/javadoc/net/sf/saxon/lib/FeatureKeys.html#MESSAGE_EMITTER_CLASS

에 대한 참조하거나 s9api의 XsltTransformer 클래스의 간단한 인터페이스가있다.

+0

모든 예 또는 MESSAGE_EMITTER_CLASS의 사용에 링크되어 있습니다. 온라인에서 예제/예제를 찾을 수 없습니다. 이것이 어떻게 Configuration - http://www.saxonica.com/documentation/javadoc/net/sf/saxon/Configuration.html#setMessageEmitterClass%28java.lang.String%29를 설정하는지에 대한 것이지만 어떻게 인스턴스화합니까? 구성 클래스? – nija

+0

표면 바로 아래에 항상 구성이 있습니다. 예를 들어 JAXP를 사용하는 경우 net.sf.saxon.TransformerFactoryImpl에서 얻을 수 있고 XQJ를 사용하면 SaxonXQDataSource에서 얻을 수 있습니다. –