目前我正在使用 iReport 设计我的第一份报告。在某些情况下,jasper 会陷入某种无限循环/递归调用中。 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
[...]
使用相同的填充 ID 重复记录此序列。我很难解释这些调试日志。除了解决具体问题外,我对调试 jasper 报告的策略很感兴趣。那么,如何调试报告呢?
最佳答案
您可以使用 log4j.properties
从 iReport 获取一些附加信息。以下步骤由 Jasper 支持人员提供给我,以帮助我查看报告生成的 SQL,其中包含多个子报告和在它们之间传递的动态 SQL。
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
文件夹。 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 安装特定目录。
iReport.log
中的输出. 关于debugging - 如何调试 jasper 报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10090254/