如何在日志中为Spring Batch库启用更多详细信息

时间:2019-10-10 08:11:31

标签: spring jdbc spring-batch compositeitemwriter itemwriter

美好的一天,

我有一个Spring批处理,使用org.springframework.batch.item.support.CompositeItemWriter将数据写入db。

以下是我的xml中的编写者代码:

    <bean id="iReturnCompositeTableWriter" class="org.springframework.batch.item.support.CompositeItemWriter">
        <property name="delegates">
            <list>
                <ref bean="iReturnTableWriter5" />
            </list>
        </property>
    </bean>

<bean id="iReturnTableWriter5" class="com.batch.job.writer.IReturnTableWriter">
    <property name="assertUpdates" value="false" />
    <property name="itemSqlParameterSourceProvider">
        <!-- Our Mapper for table writer -->
        <bean class="com.batch.job.writer.mapper.IReturnWriterTableMapper" />
    </property>
    <!-- Put in your INSERT, UPDATE, DELETE SQL here -->
    <property name="sql"
        value="UPDATE ADM.TRX
    SET  STATUS = 'FAIL'
        WHERE INTERNALREFERENCENO = :theirTraceNum" />
    <property name="dataSource" ref="dataSource" />
</bean>

以下是IReturnTableWriter类的代码:

public class IReturnTableWriter extends JdbcBatchItemWriter< TrxVO >
        implements StepExecutionListener, ItemWriteListener< TrxVO > {

    public void afterWrite(List<? extends BulkPaymentVO> arg0) {
    }

    public void beforeWrite(List<? extends BulkPaymentVO> arg0) {
    }

    public void onWriteError(Exception arg0, List<? extends BulkPaymentVO> arg1) {
    }

    public ExitStatus afterStep(StepExecution arg0) {
    return null;
    }

    public void beforeStep(StepExecution arg0) {
    }
}

以下是IReturnWriterTableMapper类的代码:

public class IReturnWriterTableMapper implements
        ItemSqlParameterSourceProvider< IbgReturnVO > {

    public SqlParameterSource createSqlParameterSource(TrxVO trxVO) {
        return new BeanPropertySqlParameterSource(trxVO);
    }
}

批处理日志显示此批处理成功运行,没有任何错误。成功计数与我的输入文件行计数匹配。在日志中,我还看到它被读取器读取并存储到trxVO对象中。

但是,有1个记录没有在生产中更新到数据库中,即使成功计数也是正确的。我抓取输入文件并在SIT,UAT中运行,并且工作正常。从日志中,我看不到有关更新查询的日志。

我实际上已经启用了日志级别来跟踪logback.xml中的org.springframework.batchorg.springframework.jdbc

<logger name="org.springframework.batch">
        <level value="TRACE" />
    </logger>

    <logger name="org.springframework.jdbc">
        <level value="TRACE" />
    </logger>

在日志中,我可以看到它已经生效:

15:44:19,173 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - org.springframework.batch level set to TRACE
15:44:19,173 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - org.springframework.jdbc level set to TRACE

我想问一下如何为编写器启用更多日志的方法,以便我可以对正在发生的事情进行故障排除。

或者,如果您有更多有用的想法或建议,请提出建议。

1 个答案:

答案 0 :(得分:1)

  

我想问一下如何为作者启用更多日志的方法

JdbcBatchItemWriter在后​​台使用spring-jdbc API,因此您可以将debug软件包的日志级别设置为org.springframework.jdbc

我还将为org.springframework.batch启用调试日志。

相关问题