2010-03-31 8 views

Odpowiedz

0

nie wiem FOP, ale zawsze można przekierować stderr do gdziekolwiek chcesz z kodem tak:

File errDumpFile = new File("Path\to\a\File") 
FileOutputStream fos = new FileOutputStream(errDumpFile); 
PrintStream ps = new PrintStream(fos); 
System.setErr(ps); 

Uwaga: nie trzeba przekierować do pliku, może PrintStream weź dowolne OutputStream.

1

znalazłem śladu w dokumentacji FOP: http://xmlgraphics.apache.org/fop/0.95/embedding.html#basic-logging napisem "My przełączane [...] do Jakarta Commons Logging". Twój log4j.properties prawdopodobnie nie przyniesie żadnego efektu, ponieważ używają one rejestrującego commons.

To działa w moim przypadku:

<logger name="org.apache.fop"> 
    <level value="info" /> 
    <appender-ref ref="logfile" /> 
    <appender-ref ref="stdout" /> 
</logger> 

Sprawdź commons logowaniem konfigurację, czy proces odkrycie może znaleźć log4j ( http://commons.apache.org/logging/guide.html#Configuration)

1

możesz zrobić coś takiego:

org.apache.commons.logging.impl.Log4JLogger log = (org.apache.commons.logging.impl.Log4JLogger) LogFactory.getLog("org.apache.fop"); 

log.getLogger().setLevel(org.apache.log4j.Level.FATAL); 
+0

pracuje dla mnie. +1 za uwzględnienie w pełni kwalifikowanych nazw klas. – Ags1

7

To może późno, ale w wersji 1.1 można utworzyć klasę, która implementuje EventListener. W processEvent możesz po prostu zignorować wszystkie wiadomości, których nie chcesz oglądać.

Od FOP Docs:

import org.apache.fop.events.Event; 
import org.apache.fop.events.EventFormatter; 
import org.apache.fop.events.EventListener; 
import org.apache.fop.events.model.EventSeverity; 

/** A simple event listener that writes the events to stdout and stderr. */ 
public class SysOutEventListener implements EventListener { 

    /** {@inheritDoc} */ 
    public void processEvent(Event event) { 
     String msg = EventFormatter.format(event); 
     EventSeverity severity = event.getSeverity(); 
     if (severity == EventSeverity.INFO) { 
      System.out.println("[INFO ] " + msg); 
     } else if (severity == EventSeverity.WARN) { 
      System.out.println("[WARN ] " + msg); 
     } else if (severity == EventSeverity.ERROR) { 
      System.err.println("[ERROR] " + msg); 
     } else if (severity == EventSeverity.FATAL) { 
      System.err.println("[FATAL] " + msg); 
     } else { 
      assert false; 
     } 
    } 
} 

Zastosowanie:

StreamSource strm = new StreamSource(new File(fo)); 
OutputStream outStream = new BufferedOutputStream(new FileOutputStream(new File(pdfName))); 
Fop fop = _fopFactory.newFop(org.apache.xmlgraphics.util.MimeConstants.__Fields.MIME_PDF, outStream); 
FOUserAgent foUserAgent = fop.getUserAgent(); 
foUserAgent.getEventBroadcaster().addEventListener(new SysOutEventListener()); 
Powiązane problemy