2012-04-10 5 views
5

В настоящее время я работаю над своими первыми отчетами, используя iReport для дизайна. При определенных условиях яшма застревает в какой-то петле/рекурсивном вызове infinte. Журналы Джаспера, следующие несколько раз:Как отлаживать отчеты о яшме?

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

Эта последовательность регистрируется повторно с идентичными идентификаторами наполнителя. У меня возникают трудности с интерпретацией этих журналов отладки. Помимо решения конкретной проблемы, меня интересуют стратегии отладки отчетов о яшме. Итак, как вы отлаживаете отчеты?

+0

Вы говорите об отладке 'iReport'? –

+0

Вы можете попробовать протестировать свой отчет с помощью Java-приложения (например, вы можете использовать JasperReports API). Вы можете загрузить исходный код JR API, чтобы вы могли легко отлаживать такое приложение. –

+0

@Alex K # 1: Нет, я хотел бы отладить отчет о яшме с несколькими подписями. # 2: Ну, я уже использую источники и затмение, чтобы пройти через код, но мне было интересно, есть ли лучшая альтернатива – GLA

ответ

5

Вы можете использовать log4j.properties, чтобы получить дополнительную информацию от iReport. Следующие шаги были предоставлены мне поддержкой Jasper, чтобы помочь мне понять, что SQL генерируется в отчете с несколькими подчиненными отчетами и динамическим SQL, передаваемым между ними.

  1. Создать log4j.properties файл (поместите его под ireport/etc), с содержание следующим образом:

    ############################################# 
    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 
    ############################################# 
    

    С выше, журнал выход будет в iReport.log в папке c:/tmp .

  2. Edit ireport/etc/ireportpro.conf и добавьте следующее содержимое в default_options параметра:

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

    Так он становится:

    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" 
    

    Пожалуйста, обратите внимание на выше директории, вам нужно будет настроить его до ваш собственный каталог iReport.

  3. Перезапустить iReport и выполнить отчеты, сгенерированный SQL будет тогда выход в iReport.log.

Смежные вопросы