2012-04-10 11 views
5

Attualmente sto lavorando ai miei primi rapporti utilizzando iReport per la progettazione. In determinate condizioni, Jasper rimane bloccato in una sorta di loop infinito/chiamata ricorsiva. i registri di Jasper seguenti ripetutamente:Come eseguire il debug dei report jasper?

[...] 
12-04-10 10:29:59,222 DEBUG s.engine.fill.JRVerticalFiller|Fill 1207280802: page footer 
12-04-10 10:29:59,222 DEBUG ports.engine.fill.JRBaseFiller|Fill 1207280802: adding page 38849 
12-04-10 10:29:59,222 DEBUG ts.engine.fill.JRFillSubreport|Fill 1207280802: resuming 849817670 
12-04-10 10:29:59,222 DEBUG e.fill.JRThreadSubreportRunner|Fill 849817670: notifying to continue 
12-04-10 10:29:59,222 DEBUG e.fill.JRThreadSubreportRunner|Fill 849817670: waiting for fill result 
12-04-10 10:29:59,222 DEBUG e.fill.JRThreadSubreportRunner|Fill 849817670: notified to continue 
12-04-10 10:29:59,222 DEBUG ports.engine.fill.JRBaseFiller|Fill 849817670: suspeding subreport runner 
12-04-10 10:29:59,222 DEBUG e.fill.JRThreadSubreportRunner|Fill 849817670: notifying on suspend 
12-04-10 10:29:59,222 DEBUG e.fill.JRThreadSubreportRunner|Fill 849817670: waiting to continue 
12-04-10 10:29:59,222 DEBUG e.fill.JRThreadSubreportRunner|Fill 849817670: notified of fill result 
12-04-10 10:29:59,222 DEBUG ts.engine.fill.JRFillSubreport|Fill 1207280802: subreport 849817670 to continue 
[...] 

Questa sequenza viene registrato più volte con gli ID di riempimento identici. Ho difficoltà con l'interpretazione di questi registri di debug. Oltre a risolvere il problema concreto, sono interessato alle strategie per il debug dei report jasper. Quindi, come si fa il debug dei report?

+0

Stai parlando del debug di iReport? –

+0

È possibile provare a testare il report con l'applicazione Java (ad esempio, è possibile utilizzare l'API JasperReports). Puoi scaricare l'origine dell'API JR, quindi puoi facilmente eseguire il debug dell'applicazione –

+0

@Alex K # 1: No, vorrei eseguire il debug di un report jasper con diversi sottoreport. # 2: Bene, sto già usando le fonti ed eclipse per scorrere il codice, ma mi chiedevo se c'è un'alternativa migliore – GLA

risposta

5

È possibile utilizzare log4j.properties per ottenere ulteriori informazioni da iReport. I seguenti passaggi mi sono stati forniti dal supporto di Jasper per aiutarmi a vedere quale SQL veniva generato da un report con diversi sottoriport e SQL dinamico passato tra di loro.

  1. Creare un file log4j.properties (posizionarlo sotto ireport/etc), con le contenuti nel seguente modo:

    ############################################# 
    log4j.appender.fileout=org.apache.log4j.RollingFileAppender 
    log4j.appender.fileout.File=C:/tmp/iReport.log 
    log4j.appender.fileout.MaxFileSize=1024KB 
    log4j.appender.fileout.MaxBackupIndex=1 
    log4j.appender.fileout.layout=org.apache.log4j.PatternLayout 
    log4j.appender.fileout.layout.conversionPattern=%d{ABSOLUTE} %5p 
    %c{1},%t:%L - %m%n 
    log4j.rootLogger=warn, fileout 
    log4j.logger.net.sf.jasperreports.engine.query=debug 
    ############################################# 
    

    Con quanto sopra, il registro di uscita sarà in iReport.log nella cartella c:/tmp .

  2. Modifica ireport/etc/ireportpro.conf e aggiungere il seguente contenuto nel default_options parametri:

    -J-Dlog4j.configuration=file:/E:/Server/Server451/ireport/etc/log4j.properties 
    

    Così diventa:

    default_options="-J-Xms24m -J-Xmx512m 
    
    -J-Dorg.netbeans.ProxyClassLoader.level=1000 -J-XX:MaxPermSize=256m 
    -J-Dlog4j.configuration=file:/E:/Server/Server451/ireport/etc/log4j.properties" 
    

    Si prega di prestare attenzione alla directory di cui sopra, è necessario regolarlo a la propria directory specifica di installazione di iReport.

  3. Riavviare iReport ed eseguire report, l'SQL generato sarà quindi output in iReport.log.

Problemi correlati