2010-03-31 14 views

risposta

0

non so FOP, ma si può sempre reindirizzare lo STDERR dove mai ti piace con codice come il seguente:

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

Nota: non c'è bisogno di reindirizzare a un file, il PrintStream può prendere qualsiasi OutputStream.

1

ho trovato un accenno nella documentazione FOP: http://xmlgraphics.apache.org/fop/0.95/embedding.html#basic-logging dicendo "Siamo passati [...] per Jakarta Commons Logging". Il tuo log4j.properties probabilmente non avrà alcun effetto, perché sta usando la registrazione dei comuni.

Questo funziona nel mio caso:

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

Controllare i comuni di registrazione di configurazione, se il processo di rilevazione può trovare log4j ( http://commons.apache.org/logging/guide.html#Configuration)

1

si può fare qualcosa di simile:

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

funziona per me. +1 per includere nomi di classi pienamente qualificati. – Ags1

7

Forse in ritardo, ma nella versione 1.1 è possibile creare una classe che implementa EventListener. In processEvent puoi semplicemente ignorare tutti i messaggi che non vuoi vedere.

Da 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; 
     } 
    } 
} 

Usage:

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()); 
Problemi correlati