2012-04-10 3 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 
[...] 

이 시퀀스는 동일한 필러 ID로 반복적으로 기록됩니다. 디버깅 로그를 해석하는 데 어려움이 있습니다. 구체적인 문제를 해결하는 것 외에도 재스퍼 보고서를 디버깅하는 전략에 관심이 있습니다. 그렇다면 보고서를 어떻게 디버깅합니까?

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

    을 상기하면, 출력 로그는 c:/tmp 폴더 iReport.log 될 것이다.

  2. 편집 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이됩니다.

관련 문제