You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/10/21 11:41:49 UTC
[camel] 01/02: camel-core - Optimize log EIP to eager compute
whether should log and also avoid fire listenerns if they are empty
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit cf14e0bda9e727da3f3379c78b8336f6cead831a
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Oct 21 12:38:12 2020 +0200
camel-core - Optimize log EIP to eager compute whether should log and also avoid fire listenerns if they are empty
---
.../org/apache/camel/processor/LogProcessor.java | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/LogProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/LogProcessor.java
index db3c548..3fe420d 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/LogProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/LogProcessor.java
@@ -44,38 +44,37 @@ public class LogProcessor extends AsyncProcessorSupport implements Traceable, Id
private final CamelLogger logger;
private final MaskingFormatter formatter;
private final Set<LogListener> listeners;
+ private final boolean shouldLog;
public LogProcessor(Expression expression, CamelLogger logger, MaskingFormatter formatter, Set<LogListener> listeners) {
this.expression = expression;
this.logger = logger;
this.formatter = formatter;
this.listeners = listeners;
+ this.shouldLog = logger.shouldLog();
}
@Override
public boolean process(Exchange exchange, AsyncCallback callback) {
- try {
- if (logger.shouldLog()) {
+ if (shouldLog) {
+ try {
String msg = expression.evaluate(exchange, String.class);
if (formatter != null) {
msg = formatter.format(msg);
}
- msg = fireListeners(exchange, msg);
+ if (!listeners.isEmpty()) {
+ msg = fireListeners(exchange, msg);
+ }
logger.doLog(msg);
+ } catch (Throwable e) {
+ exchange.setException(e);
}
- } catch (Exception e) {
- exchange.setException(e);
- } finally {
- // callback must be invoked
- callback.done(true);
}
+ callback.done(true);
return true;
}
private String fireListeners(Exchange exchange, String message) {
- if (listeners == null) {
- return message;
- }
for (LogListener listener : listeners) {
if (listener == null) {
continue;