12

現在、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 レポートをデバッグする戦略に興味があります。では、レポートをどのようにデバッグするのでしょうか?

4

3 に答える 3

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. パラメータに次の内容を編集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ます。

于 2013-04-13T14:38:44.657 に答える
0

Jasperreports バージョン 7.5 の場合、これは設定する必要がある構成ファイルです。

vim /opt/tomcat/webapps/jasperserver/WEB-INF/log4j2.properties

logger.net_sf_jasperreports_engine_query_JRJdbcQueryExecuter.name=net.sf.jasperreports.engine.query.JRJdbcQueryExecuter
logger.net_sf_jasperreports_engine_query_JRJdbcQueryExecuter.level=debug

このようにして、クエリが実行され、パラメーターが置換されます。

[...]
FROM t
GROUP BY trunc(local_date, 'DD')
ORDER BY trunc(local_date, 'DD') DESC
2021-09-23T12:06:57,495 DEBUG JRJdbcQueryExecuter,pool-5-thread-1:586 - Parameter #1 (USU_WEB of type java.lang.String): FOO
2021-09-23T12:06:57,501 DEBUG JRJdbcQueryExecuter,pool-5-thread-1:586 - Parameter #2 (START_DATETIME of type java.lang.String): 2021-09-13 00:00:00
2021-09-23T12:06:57,501 DEBUG JRJdbcQueryExecuter,pool-5-thread-1:586 - Parameter #3 (END_DATETIME of type java.lang.String): 2021-09-24 00:00:00
2021-09-23T12:06:57,501 DEBUG JRJdbcQueryExecuter,pool-5-thread-1:586 - Parameter #4 (USU_WEB of type java.lang.String): FOO
于 2021-09-23T10:28:04.567 に答える