2012-04-10 32 views
5

Obecnie pracuję nad swoimi pierwszymi raportami, używając iReport do projektowania. W pewnych warunkach Jasper utknął w jakiejś infuzji pętli/rekurencyjnej. kłody Jasper następujące wielokrotnie:Jak debugować raporty Jaspera?

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

Sekwencja ta powtarza rejestrowane z identycznymi identyfikatorami wypełniacza. Mam trudności z interpretacją tych dzienników debugowania. Oprócz rozwiązania konkretnego problemu interesują mnie strategie debugowania raportów Jaspera. Jak więc debugować raporty?

+0

Czy mówisz o debugowaniu 'iReport'? –

+0

Możesz spróbować przetestować swój raport za pomocą aplikacji Java (możesz użyć np. API JasperReports). Możesz pobrać źródło JR API, dzięki czemu można łatwo debugować taką aplikację. –

+0

@Alex K # 1: Nie, chciałbym debugować raport jaspisowy z kilkoma podraportami. # 2: Cóż, już używam źródeł i eclipse, aby przejść przez kod, ale zastanawiałem się, czy istnieje lepsza alternatywa – GLA

Odpowiedz

5

Możesz użyć log4j.properties, aby uzyskać dodatkowe informacje z iReport. Poniższe kroki zostały dostarczone mi przez obsługę Jaspera, dzięki czemu mogłem zobaczyć, jaki kod SQL został wygenerowany przez raport z kilkoma raportami podrzędnymi i dynamicznym przekazywaniem SQL między nimi.

  1. Tworzenie log4j.properties plik (umieścić go pod ireport/etc), z zawartością następująco:

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

    Z powyższego dziennika wyjście będzie w iReport.log w folderze c:/tmp .

  2. Edit ireport/etc/ireportpro.conf i dodać następujące zawartości w parametrze default_options:

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

    więc staje się:

    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" 
    

    Proszę zwrócić uwagę na powyższym katalogu, trzeba go wyregulować do swój własny katalog instalacji iReport.

  3. Ponownie uruchom raporty iReport i wykonaj, wygenerowany kod SQL będzie wtedy wyjściowy w iReport.log.