2012-04-10 7 views
5

Actualmente estoy trabajando en mis primeros informes usando iReport para el diseño. Bajo ciertas condiciones, jasper se atasca en una especie de llamada infinte loop/recursive. Los registros de Jasper se repiten varias veces:¿Cómo depurar los informes de jaspe?

[...] 
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 
[...] 

Esta secuencia se registra repetidamente con identificaciones de llenado idénticas. Tengo dificultades para interpretar esos registros de depuración. Además de resolver el problema concreto, me interesan las estrategias para depurar los informes de jaspe. Entonces, ¿cómo se depuran los informes?

+0

¿Estás hablando de la depuración 'iReport'? –

+0

Puede intentar probar su informe con la aplicación Java (puede usar API JasperReports, por ejemplo). Puede descargar la fuente de la API de JR, para que pueda depurar fácilmente dicha aplicación –

+0

@Alex K # 1: No, me gustaría depurar un informe de jaspe con varios subinformes. # 2: Bueno, ya estoy usando las fuentes y el eclipse para recorrer el código, pero me preguntaba si hay una mejor alternativa – GLA

Respuesta

5

Puede usar el log4j.properties para obtener información adicional de iReport. Los siguientes pasos me fueron provistos por el soporte de Jasper para ayudarme a ver qué SQL estaba generando un informe con varios informes secundarios y un SQL dinámico que se pasaba entre ellos.

  1. Crear un archivo log4j.properties (colocarlo bajo ireport/etc), con los contenidos de la siguiente manera:

    ############################################# 
    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 lo anterior, el registro de salida será en el iReport.log en la carpeta c:/tmp .

  2. Editar ireport/etc/ireportpro.conf y añadir el siguiente contenido en el default_options parámetro:

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

    Por lo tanto, se convierte en:

    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" 
    

    preste atención al directorio anterior, tendrá que ajustarlo a su propio directorio específico de instalación de iReport.

  3. Reiniciar iReport y ejecutar informes, el SQL generado será entonces salida en iReport.log.

Cuestiones relacionadas