From 3783345c5510439cccdc168e497e46fdfe36240c Mon Sep 17 00:00:00 2001 From: Philippe Marschall Date: Tue, 4 Aug 2015 08:46:54 +0200 Subject: [PATCH] BATCH-2412 Add guards around debug statements In various places in the code base a debug message is constructed unconditionally. This adds unnecessary overhead in the common case when debug logging is off. - add guards around debug statements in non-test code Issue: BATCH-2412 --- .../AbstractApplicationContextFactory.java | 4 +++- .../support/DefaultJobLoader.java | 12 ++++++++--- .../support/JobRegistryBeanPostProcessor.java | 8 ++++++-- .../batch/core/job/AbstractJob.java | 12 ++++++++--- .../batch/core/job/SimpleJob.java | 4 +++- .../core/job/flow/support/SimpleFlow.java | 12 ++++++++--- .../core/jsr/step/item/JsrChunkProcessor.java | 4 +++- .../launch/support/CommandLineJobRunner.java | 4 +++- .../repository/dao/JdbcJobExecutionDao.java | 4 +++- .../repository/dao/JdbcStepExecutionDao.java | 4 +++- .../batch/core/scope/JobScope.java | 12 ++++++++--- .../batch/core/scope/StepScope.java | 13 +++++++++--- .../context/StepContextRepeatCallback.java | 8 ++++++-- .../batch/core/step/AbstractStep.java | 12 ++++++++--- .../core/step/item/ChunkOrientedTasklet.java | 4 +++- .../core/step/item/SimpleChunkProvider.java | 4 +++- .../item/SimpleRetryExceptionHandler.java | 4 +++- .../batch/core/step/tasklet/TaskletStep.java | 20 ++++++++++++++----- .../database/StoredProcedureItemReader.java | 5 ++++- .../batch/item/xml/StaxEventItemWriter.java | 4 +++- .../batch/item/xml/StaxUtils.java | 8 +++++--- .../batch/repeat/support/RepeatTemplate.java | 16 ++++++++++----- .../ResourcelessTransactionManager.java | 8 ++++++-- .../chunk/ChunkProcessorChunkHandler.java | 8 ++++++-- .../chunk/JmsRedeliveredExtractor.java | 4 +++- .../chunk/RemoteChunkHandlerFactoryBean.java | 8 ++++++-- 26 files changed, 153 insertions(+), 53 deletions(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/AbstractApplicationContextFactory.java b/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/AbstractApplicationContextFactory.java index a1971f9a2..fa44be707 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/AbstractApplicationContextFactory.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/AbstractApplicationContextFactory.java @@ -233,7 +233,9 @@ public abstract class AbstractApplicationContextFactory implements ApplicationCo for (BeanPostProcessor beanPostProcessor : new ArrayList(aggregatedPostProcessors)) { for (Class cls : beanPostProcessorExcludeClasses) { if (cls.isAssignableFrom(beanPostProcessor.getClass())) { - logger.debug("Removing bean post processor: " + beanPostProcessor + " of type " + cls); + if (logger.isDebugEnabled()) { + logger.debug("Removing bean post processor: " + beanPostProcessor + " of type " + cls); + } aggregatedPostProcessors.remove(beanPostProcessor); } } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/DefaultJobLoader.java b/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/DefaultJobLoader.java index cfd00ae36..39b34cdfb 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/DefaultJobLoader.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/DefaultJobLoader.java @@ -129,7 +129,9 @@ public class DefaultJobLoader implements JobLoader, InitializingBean { if (contexts.containsKey(factory)) { ConfigurableApplicationContext context = contexts.get(factory); for (String name : contextToJobNames.get(context)) { - logger.debug("Unregistering job: " + name + " from context: " + context.getDisplayName()); + if (logger.isDebugEnabled()) { + logger.debug("Unregistering job: " + name + " from context: " + context.getDisplayName()); + } doUnregister(name); } context.close(); @@ -179,11 +181,15 @@ public class DefaultJobLoader implements JobLoader, InitializingBean { // On reload try to unregister first if (unregister) { - logger.debug("Unregistering job: " + jobName + " from context: " + context.getDisplayName()); + if (logger.isDebugEnabled()) { + logger.debug("Unregistering job: " + jobName + " from context: " + context.getDisplayName()); + } doUnregister(jobName); } - logger.debug("Registering job: " + jobName + " from context: " + context.getDisplayName()); + if (logger.isDebugEnabled()) { + logger.debug("Registering job: " + jobName + " from context: " + context.getDisplayName()); + } doRegister(context, job); jobsRegistered.add(jobName); } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/JobRegistryBeanPostProcessor.java b/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/JobRegistryBeanPostProcessor.java index 555d8d47e..c4ea3d97d 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/JobRegistryBeanPostProcessor.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/JobRegistryBeanPostProcessor.java @@ -113,7 +113,9 @@ DisposableBean { @Override public void destroy() throws Exception { for (String name : jobNames) { - logger.debug("Unregistering job: " + name); + if (logger.isDebugEnabled()) { + logger.debug("Unregistering job: " + name); + } jobRegistry.unregister(name); } jobNames.clear(); @@ -138,7 +140,9 @@ DisposableBean { job = groupName==null ? job : new GroupAwareJob(groupName, job); ReferenceJobFactory jobFactory = new ReferenceJobFactory(job); String name = jobFactory.getJobName(); - logger.debug("Registering job: " + name); + if (logger.isDebugEnabled()) { + logger.debug("Registering job: " + name); + } jobRegistry.register(jobFactory); jobNames.add(name); } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/job/AbstractJob.java b/spring-batch-core/src/main/java/org/springframework/batch/core/job/AbstractJob.java index 10ac5d74e..13de19049 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/job/AbstractJob.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/job/AbstractJob.java @@ -285,7 +285,9 @@ InitializingBean { @Override public final void execute(JobExecution execution) { - logger.debug("Job execution starting: " + execution); + if (logger.isDebugEnabled()) { + logger.debug("Job execution starting: " + execution); + } JobSynchronizationManager.register(execution); @@ -302,7 +304,9 @@ InitializingBean { try { doExecute(execution); - logger.debug("Job execution complete: " + execution); + if (logger.isDebugEnabled()) { + logger.debug("Job execution complete: " + execution); + } } catch (RepeatException e) { throw e.getCause(); } @@ -312,7 +316,9 @@ InitializingBean { // with it in the same way as any other interruption. execution.setStatus(BatchStatus.STOPPED); execution.setExitStatus(ExitStatus.COMPLETED); - logger.debug("Job execution was stopped: " + execution); + if (logger.isDebugEnabled()) { + logger.debug("Job execution was stopped: " + execution); + } } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/job/SimpleJob.java b/spring-batch-core/src/main/java/org/springframework/batch/core/job/SimpleJob.java index ee75114b4..ab6066c90 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/job/SimpleJob.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/job/SimpleJob.java @@ -145,7 +145,9 @@ public class SimpleJob extends AbstractJob { // Update the job status to be the same as the last step // if (stepExecution != null) { - logger.debug("Upgrading JobExecution status: " + stepExecution); + if (logger.isDebugEnabled()) { + logger.debug("Upgrading JobExecution status: " + stepExecution); + } execution.upgradeStatus(stepExecution.getStatus()); execution.setExitStatus(stepExecution.getExitStatus()); } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/SimpleFlow.java b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/SimpleFlow.java index b8396b24d..a767c184e 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/SimpleFlow.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/SimpleFlow.java @@ -153,7 +153,9 @@ public class SimpleFlow implements Flow, InitializingBean { FlowExecutionStatus status = FlowExecutionStatus.UNKNOWN; State state = stateMap.get(stateName); - logger.debug("Resuming state="+stateName+" with status="+status); + if (logger.isDebugEnabled()) { + logger.debug("Resuming state="+stateName+" with status="+status); + } StepExecution stepExecution = null; // Terminate if there are no more states @@ -161,7 +163,9 @@ public class SimpleFlow implements Flow, InitializingBean { stateName = state.getName(); try { - logger.debug("Handling state="+stateName); + if (logger.isDebugEnabled()) { + logger.debug("Handling state="+stateName); + } status = state.handle(executor); stepExecution = executor.getStepExecution(); } @@ -175,7 +179,9 @@ public class SimpleFlow implements Flow, InitializingBean { stateName), e); } - logger.debug("Completed state="+stateName+" with status="+status); + if (logger.isDebugEnabled()) { + logger.debug("Completed state="+stateName+" with status="+status); + } state = nextState(stateName, status, stepExecution); } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/step/item/JsrChunkProcessor.java b/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/step/item/JsrChunkProcessor.java index 953310262..26e9c1c27 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/step/item/JsrChunkProcessor.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/step/item/JsrChunkProcessor.java @@ -170,7 +170,9 @@ public class JsrChunkProcessor implements ChunkProcessor { return item; } catch (Exception e) { - logger.debug(e.getMessage() + " : " + e.getClass().getName()); + if (logger.isDebugEnabled()) { + logger.debug(e.getMessage() + " : " + e.getClass().getName()); + } listener.onReadError(e); throw e; } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/CommandLineJobRunner.java b/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/CommandLineJobRunner.java index 7255fd0ce..b25f99237 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/CommandLineJobRunner.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/CommandLineJobRunner.java @@ -536,7 +536,9 @@ public class CommandLineJobRunner { String line = " "; while (line != null) { if (!line.startsWith("#") && StringUtils.hasText(line)) { - logger.debug("Stdin arg: " + line); + if (logger.isDebugEnabled()) { + logger.debug("Stdin arg: " + line); + } newargs.add(line); } line = reader.readLine(); diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobExecutionDao.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobExecutionDao.java index f5c8dd865..13e62b937 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobExecutionDao.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobExecutionDao.java @@ -203,7 +203,9 @@ public class JdbcJobExecutionDao extends AbstractJdbcBatchMetadataDao implements String exitDescription = jobExecution.getExitStatus().getExitDescription(); if (exitDescription != null && exitDescription.length() > exitMessageLength) { exitDescription = exitDescription.substring(0, exitMessageLength); - logger.debug("Truncating long message before update of JobExecution: " + jobExecution); + if (logger.isDebugEnabled()) { + logger.debug("Truncating long message before update of JobExecution: " + jobExecution); + } } Object[] parameters = new Object[] { jobExecution.getStartTime(), jobExecution.getEndTime(), jobExecution.getStatus().toString(), jobExecution.getExitStatus().getExitCode(), exitDescription, diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcStepExecutionDao.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcStepExecutionDao.java index 4896827b5..1a8082470 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcStepExecutionDao.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcStepExecutionDao.java @@ -271,7 +271,9 @@ public class JdbcStepExecutionDao extends AbstractJdbcBatchMetadataDao implement */ private String truncateExitDescription(String description) { if (description != null && description.length() > exitMessageLength) { - logger.debug("Truncating long message before update of StepExecution, original message is: " + description); + if (logger.isDebugEnabled()) { + logger.debug("Truncating long message before update of StepExecution, original message is: " + description); + } return description.substring(0, exitMessageLength); } else { return description; diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/scope/JobScope.java b/spring-batch-core/src/main/java/org/springframework/batch/core/scope/JobScope.java index c34034e1a..d414bff08 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/scope/JobScope.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/scope/JobScope.java @@ -98,7 +98,9 @@ public class JobScope extends BatchScopeSupport { scopedObject = context.getAttribute(name); if (scopedObject == null) { - logger.debug(String.format("Creating object in scope=%s, name=%s", this.getName(), name)); + if (logger.isDebugEnabled()) { + logger.debug(String.format("Creating object in scope=%s, name=%s", this.getName(), name)); + } scopedObject = objectFactory.getObject(); context.setAttribute(name, scopedObject); @@ -126,7 +128,9 @@ public class JobScope extends BatchScopeSupport { @Override public void registerDestructionCallback(String name, Runnable callback) { JobContext context = getContext(); - logger.debug(String.format("Registered destruction callback in scope=%s, name=%s", this.getName(), name)); + if (logger.isDebugEnabled()) { + logger.debug(String.format("Registered destruction callback in scope=%s, name=%s", this.getName(), name)); + } context.registerDestructionCallback(name, callback); } @@ -136,7 +140,9 @@ public class JobScope extends BatchScopeSupport { @Override public Object remove(String name) { JobContext context = getContext(); - logger.debug(String.format("Removing from scope=%s, name=%s", this.getName(), name)); + if (logger.isDebugEnabled()) { + logger.debug(String.format("Removing from scope=%s, name=%s", this.getName(), name)); + } return context.removeAttribute(name); } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/scope/StepScope.java b/spring-batch-core/src/main/java/org/springframework/batch/core/scope/StepScope.java index 423f018ce..05d6ef957 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/scope/StepScope.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/scope/StepScope.java @@ -105,7 +105,10 @@ public class StepScope extends BatchScopeSupport { scopedObject = context.getAttribute(name); if (scopedObject == null) { - logger.debug(String.format("Creating object in scope=%s, name=%s", this.getName(), name)); + if (logger.isDebugEnabled()) { + logger.debug(String.format("Creating object in scope=%s, name=%s", this.getName(), name)); + } + scopedObject = objectFactory.getObject(); context.setAttribute(name, scopedObject); @@ -133,7 +136,9 @@ public class StepScope extends BatchScopeSupport { @Override public void registerDestructionCallback(String name, Runnable callback) { StepContext context = getContext(); - logger.debug(String.format("Registered destruction callback in scope=%s, name=%s", this.getName(), name)); + if (logger.isDebugEnabled()) { + logger.debug(String.format("Registered destruction callback in scope=%s, name=%s", this.getName(), name)); + } context.registerDestructionCallback(name, callback); } @@ -143,7 +148,9 @@ public class StepScope extends BatchScopeSupport { @Override public Object remove(String name) { StepContext context = getContext(); - logger.debug(String.format("Removing from scope=%s, name=%s", this.getName(), name)); + if (logger.isDebugEnabled()) { + logger.debug(String.format("Removing from scope=%s, name=%s", this.getName(), name)); + } return context.removeAttribute(name); } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/scope/context/StepContextRepeatCallback.java b/spring-batch-core/src/main/java/org/springframework/batch/core/scope/context/StepContextRepeatCallback.java index c47e8f89a..ab7aa01e0 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/scope/context/StepContextRepeatCallback.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/scope/context/StepContextRepeatCallback.java @@ -65,7 +65,9 @@ public abstract class StepContextRepeatCallback implements RepeatCallback { // The StepContext has to be the same for all chunks, // otherwise step-scoped beans will be re-initialised for each chunk. StepContext stepContext = StepSynchronizationManager.register(stepExecution); - logger.debug("Preparing chunk execution for StepContext: "+ObjectUtils.identityToString(stepContext)); + if (logger.isDebugEnabled()) { + logger.debug("Preparing chunk execution for StepContext: "+ObjectUtils.identityToString(stepContext)); + } ChunkContext chunkContext = attributeQueue.poll(); if (chunkContext == null) { @@ -73,7 +75,9 @@ public abstract class StepContextRepeatCallback implements RepeatCallback { } try { - logger.debug("Chunk execution starting: queue size="+attributeQueue.size()); + if (logger.isDebugEnabled()) { + logger.debug("Chunk execution starting: queue size="+attributeQueue.size()); + } return doInChunkContext(context, chunkContext); } finally { diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/AbstractStep.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/AbstractStep.java index 031bdfbd3..52bcb2510 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/AbstractStep.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/AbstractStep.java @@ -180,7 +180,9 @@ public abstract class AbstractStep implements Step, InitializingBean, BeanNameAw public final void execute(StepExecution stepExecution) throws JobInterruptedException, UnexpectedJobExecutionException { - logger.debug("Executing: id=" + stepExecution.getId()); + if (logger.isDebugEnabled()) { + logger.debug("Executing: id=" + stepExecution.getId()); + } stepExecution.setStartTime(new Date()); stepExecution.setStatus(BatchStatus.STARTED); getJobRepository().update(stepExecution); @@ -209,7 +211,9 @@ public abstract class AbstractStep implements Step, InitializingBean, BeanNameAw // Need to upgrade here not set, in case the execution was stopped stepExecution.upgradeStatus(BatchStatus.COMPLETED); - logger.debug("Step execution success: id=" + stepExecution.getId()); + if (logger.isDebugEnabled()) { + logger.debug("Step execution success: id=" + stepExecution.getId()); + } } catch (Throwable e) { stepExecution.upgradeStatus(determineBatchStatus(e)); @@ -273,7 +277,9 @@ public abstract class AbstractStep implements Step, InitializingBean, BeanNameAw doExecutionRelease(); - logger.debug("Step execution complete: " + stepExecution.getSummary()); + if (logger.isDebugEnabled()) { + logger.debug("Step execution complete: " + stepExecution.getSummary()); + } } } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ChunkOrientedTasklet.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ChunkOrientedTasklet.java index 1fd2bcf8b..79edda304 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ChunkOrientedTasklet.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ChunkOrientedTasklet.java @@ -85,7 +85,9 @@ public class ChunkOrientedTasklet implements Tasklet { chunkContext.removeAttribute(INPUTS_KEY); chunkContext.setComplete(); - logger.debug("Inputs not busy, ended: " + inputs.isEnd()); + if (logger.isDebugEnabled()) { + logger.debug("Inputs not busy, ended: " + inputs.isEnd()); + } return RepeatStatus.continueIf(!inputs.isEnd()); } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/SimpleChunkProvider.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/SimpleChunkProvider.java index 0a18103d1..47fc09d71 100755 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/SimpleChunkProvider.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/SimpleChunkProvider.java @@ -95,7 +95,9 @@ public class SimpleChunkProvider implements ChunkProvider { return item; } catch (Exception e) { - logger.debug(e.getMessage() + " : " + e.getClass().getName()); + if (logger.isDebugEnabled()) { + logger.debug(e.getMessage() + " : " + e.getClass().getName()); + } listener.onReadError(e); throw e; } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/SimpleRetryExceptionHandler.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/SimpleRetryExceptionHandler.java index c7202ff2b..169fd555e 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/SimpleRetryExceptionHandler.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/SimpleRetryExceptionHandler.java @@ -97,7 +97,9 @@ public class SimpleRetryExceptionHandler extends RetryListenerSupport implements @Override public void close(RetryContext context, RetryCallback callback, Throwable throwable) { if (!retryPolicy.canRetry(context)) { - logger.debug("Marking retry as exhausted: "+context); + if (logger.isDebugEnabled()) { + logger.debug("Marking retry as exhausted: "+context); + } getRepeatContext().setAttribute(EXHAUSTED, "true"); } } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/tasklet/TaskletStep.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/tasklet/TaskletStep.java index 784ba4a39..f2a036f6e 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/tasklet/TaskletStep.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/tasklet/TaskletStep.java @@ -434,7 +434,9 @@ public class TaskletStep extends AbstractStep { // Apply the contribution to the step // even if unsuccessful - logger.debug("Applying contribution: " + contribution); + if (logger.isDebugEnabled()) { + logger.debug("Applying contribution: " + contribution); + } stepExecution.apply(contribution); } @@ -448,7 +450,9 @@ public class TaskletStep extends AbstractStep { // stay false and we can use that later. getJobRepository().updateExecutionContext(stepExecution); stepExecution.incrementCommitCount(); - logger.debug("Saving step execution before commit: " + stepExecution); + if (logger.isDebugEnabled()) { + logger.debug("Saving step execution before commit: " + stepExecution); + } getJobRepository().update(stepExecution); } catch (Exception e) { @@ -460,17 +464,23 @@ public class TaskletStep extends AbstractStep { } } catch (Error e) { - logger.debug("Rollback for Error: " + e.getClass().getName() + ": " + e.getMessage()); + if (logger.isDebugEnabled()) { + logger.debug("Rollback for Error: " + e.getClass().getName() + ": " + e.getMessage()); + } rollback(stepExecution); throw e; } catch (RuntimeException e) { - logger.debug("Rollback for RuntimeException: " + e.getClass().getName() + ": " + e.getMessage()); + if (logger.isDebugEnabled()) { + logger.debug("Rollback for RuntimeException: " + e.getClass().getName() + ": " + e.getMessage()); + } rollback(stepExecution); throw e; } catch (Exception e) { - logger.debug("Rollback for Exception: " + e.getClass().getName() + ": " + e.getMessage()); + if (logger.isDebugEnabled()) { + logger.debug("Rollback for Exception: " + e.getClass().getName() + ": " + e.getMessage()); + } rollback(stepExecution); // Allow checked exceptions throw new UncheckedTransactionException(e); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/StoredProcedureItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/StoredProcedureItemReader.java index aa8abfdb9..0375da01c 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/StoredProcedureItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/StoredProcedureItemReader.java @@ -169,7 +169,10 @@ public class StoredProcedureItemReader extends AbstractCursorItemReader { SqlParameter cursorParameter = callContext.createReturnResultSetParameter("cursor", rowMapper); this.callString = callContext.createCallString(); - log.debug("Call string is: " + callString); + + if (log.isDebugEnabled()) { + log.debug("Call string is: " + callString); + } int cursorSqlType = Types.OTHER; if (function) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java index adeba52fe..768bf0ddf 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java @@ -558,7 +558,9 @@ ResourceAwareItemWriterItemStream, InitializingBean { if (key.contains(":")) { prefix = key.substring(key.indexOf(":") + 1); } - log.debug("registering prefix: " +prefix + "=" + entry.getValue()); + if (log.isDebugEnabled()) { + log.debug("registering prefix: " +prefix + "=" + entry.getValue()); + } writer.setPrefix(prefix, entry.getValue()); } } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxUtils.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxUtils.java index 14f9dd4ce..197ff4f42 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxUtils.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxUtils.java @@ -84,9 +84,11 @@ public abstract class StaxUtils { staxResultClassCtorOnSpringWs15 = staxResultClassOnSpringWs15.getConstructor(XMLEventWriter.class); } else { - logger.debug("'StaxSource' was not detected in Spring 3.0's OXM support or Spring WS 1.5's OXM support. " + - "This is a problem if you intend to use the " +StaxEventItemWriter.class.getName() + " or " + - StaxEventItemReader.class.getName()+". Please add the appropriate dependencies."); + if (logger.isDebugEnabled()) { + logger.debug("'StaxSource' was not detected in Spring 3.0's OXM support or Spring WS 1.5's OXM support. " + + "This is a problem if you intend to use the " +StaxEventItemWriter.class.getName() + " or " + + StaxEventItemReader.class.getName()+". Please add the appropriate dependencies."); + } } } catch (Exception ex) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/support/RepeatTemplate.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/support/RepeatTemplate.java index 2b6efd763..8400b395e 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/support/RepeatTemplate.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/support/RepeatTemplate.java @@ -249,8 +249,10 @@ public class RepeatTemplate implements RepeatOperations { if (!deferred.isEmpty()) { Throwable throwable = deferred.iterator().next(); - logger.debug("Handling fatal exception explicitly (rethrowing first of " + deferred.size() + "): " - + throwable.getClass().getName() + ": " + throwable.getMessage()); + if (logger.isDebugEnabled()) { + logger.debug("Handling fatal exception explicitly (rethrowing first of " + deferred.size() + "): " + + throwable.getClass().getName() + ": " + throwable.getMessage()); + } rethrow(throwable); } @@ -285,12 +287,16 @@ public class RepeatTemplate implements RepeatOperations { RepeatListener interceptor = listeners[i]; // This is not an error - only log at debug // level. - logger.debug("Exception intercepted (" + (i + 1) + " of " + listeners.length + ")", unwrappedThrowable); + if (logger.isDebugEnabled()) { + logger.debug("Exception intercepted (" + (i + 1) + " of " + listeners.length + ")", unwrappedThrowable); + } interceptor.onError(context, unwrappedThrowable); } - logger.debug("Handling exception: " + throwable.getClass().getName() + ", caused by: " - + unwrappedThrowable.getClass().getName() + ": " + unwrappedThrowable.getMessage()); + if (logger.isDebugEnabled()) { + logger.debug("Handling exception: " + throwable.getClass().getName() + ", caused by: " + + unwrappedThrowable.getClass().getName() + ": " + unwrappedThrowable.getMessage()); + } exceptionHandler.handleException(context, unwrappedThrowable); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/transaction/ResourcelessTransactionManager.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/transaction/ResourcelessTransactionManager.java index edd005244..8073206bc 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/transaction/ResourcelessTransactionManager.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/transaction/ResourcelessTransactionManager.java @@ -34,7 +34,9 @@ public class ResourcelessTransactionManager extends AbstractPlatformTransactionM @Override protected void doCommit(DefaultTransactionStatus status) throws TransactionException { - logger.debug("Committing resourceless transaction on [" + status.getTransaction() + "]"); + if (logger.isDebugEnabled()) { + logger.debug("Committing resourceless transaction on [" + status.getTransaction() + "]"); + } } @Override @@ -56,7 +58,9 @@ public class ResourcelessTransactionManager extends AbstractPlatformTransactionM @Override protected void doRollback(DefaultTransactionStatus status) throws TransactionException { - logger.debug("Rolling back resourceless transaction on [" + status.getTransaction() + "]"); + if (logger.isDebugEnabled()) { + logger.debug("Rolling back resourceless transaction on [" + status.getTransaction() + "]"); + } } @Override diff --git a/spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk/ChunkProcessorChunkHandler.java b/spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk/ChunkProcessorChunkHandler.java index 66292c5a3..8c57473f9 100644 --- a/spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk/ChunkProcessorChunkHandler.java +++ b/spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk/ChunkProcessorChunkHandler.java @@ -74,7 +74,9 @@ public class ChunkProcessorChunkHandler implements ChunkHandler, Initializ @ServiceActivator public ChunkResponse handleChunk(ChunkRequest chunkRequest) throws Exception { - logger.debug("Handling chunk: " + chunkRequest); + if (logger.isDebugEnabled()) { + logger.debug("Handling chunk: " + chunkRequest); + } StepContribution stepContribution = chunkRequest.getStepContribution(); @@ -85,7 +87,9 @@ public class ChunkProcessorChunkHandler implements ChunkHandler, Initializ + ": " + failure.getMessage()); } - logger.debug("Completed chunk handling with " + stepContribution); + if (logger.isDebugEnabled()) { + logger.debug("Completed chunk handling with " + stepContribution); + } return new ChunkResponse(true, chunkRequest.getSequence(), chunkRequest.getJobId(), stepContribution); } diff --git a/spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk/JmsRedeliveredExtractor.java b/spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk/JmsRedeliveredExtractor.java index 40ed26245..d0a65e5f9 100644 --- a/spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk/JmsRedeliveredExtractor.java +++ b/spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk/JmsRedeliveredExtractor.java @@ -29,7 +29,9 @@ public class JmsRedeliveredExtractor { private static final Log logger = LogFactory.getLog(JmsRedeliveredExtractor.class); public ChunkResponse extract(ChunkResponse input, @Header(JmsHeaders.REDELIVERED) boolean redelivered) { - logger.debug("Extracted redelivered flag for response, value="+redelivered); + if (logger.isDebugEnabled()) { + logger.debug("Extracted redelivered flag for response, value="+redelivered); + } return new ChunkResponse(input, redelivered); } diff --git a/spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk/RemoteChunkHandlerFactoryBean.java b/spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk/RemoteChunkHandlerFactoryBean.java index 6ff591fe6..72659c136 100644 --- a/spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk/RemoteChunkHandlerFactoryBean.java +++ b/spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk/RemoteChunkHandlerFactoryBean.java @@ -118,7 +118,9 @@ public class RemoteChunkHandlerFactoryBean implements FactoryBean