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:48 UTC

[camel] branch master updated (f93f1e8 -> 09269e3)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git.


    from f93f1e8  camel-core - Optimize routing engine for isErrorHandlerHandled to be inlined
     new cf14e0b  camel-core - Optimize log EIP to eager compute whether should log and also avoid fire listenerns if they are empty
     new 09269e3  camel-core - Optimize log EIP for static vs dynamic log message

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/camel/processor/LogProcessor.java   | 45 +++++++++++++++-------
 .../java/org/apache/camel/reifier/LogReifier.java  | 17 ++++++--
 2 files changed, 45 insertions(+), 17 deletions(-)


[camel] 02/02: camel-core - Optimize log EIP for static vs dynamic log message

Posted by da...@apache.org.
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 09269e327a9dce4a95b49cf6920cf775286e02fa
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Oct 21 12:54:25 2020 +0200

    camel-core - Optimize log EIP for static vs dynamic log message
---
 .../org/apache/camel/processor/LogProcessor.java   | 28 ++++++++++++++++++----
 .../java/org/apache/camel/reifier/LogReifier.java  | 17 ++++++++++---
 2 files changed, 37 insertions(+), 8 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 3fe420d..2729316 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
@@ -41,24 +41,38 @@ public class LogProcessor extends AsyncProcessorSupport implements Traceable, Id
     private String id;
     private String routeId;
     private final Expression expression;
+    private final String message;
     private final CamelLogger logger;
     private final MaskingFormatter formatter;
     private final Set<LogListener> listeners;
-    private final boolean shouldLog;
+    private boolean shouldLog;
 
     public LogProcessor(Expression expression, CamelLogger logger, MaskingFormatter formatter, Set<LogListener> listeners) {
         this.expression = expression;
+        this.message = null;
+        this.logger = logger;
+        this.formatter = formatter;
+        this.listeners = listeners;
+    }
+
+    public LogProcessor(String message, CamelLogger logger, MaskingFormatter formatter, Set<LogListener> listeners) {
+        this.expression = null;
+        this.message = message;
         this.logger = logger;
         this.formatter = formatter;
         this.listeners = listeners;
-        this.shouldLog = logger.shouldLog();
     }
 
     @Override
     public boolean process(Exchange exchange, AsyncCallback callback) {
         if (shouldLog) {
             try {
-                String msg = expression.evaluate(exchange, String.class);
+                String msg;
+                if (expression != null) {
+                    msg = expression.evaluate(exchange, String.class);
+                } else {
+                    msg = message;
+                }
                 if (formatter != null) {
                     msg = formatter.format(msg);
                 }
@@ -99,7 +113,11 @@ public class LogProcessor extends AsyncProcessorSupport implements Traceable, Id
 
     @Override
     public String getTraceLabel() {
-        return "log[" + expression + "]";
+        if (expression != null) {
+            return "log[" + expression + "]";
+        } else {
+            return "log[" + message + "]";
+        }
     }
 
     @Override
@@ -136,7 +154,7 @@ public class LogProcessor extends AsyncProcessorSupport implements Traceable, Id
 
     @Override
     protected void doStart() throws Exception {
-        // noop
+        this.shouldLog = logger.shouldLog();
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java
index 386e9c6..b46c302 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java
@@ -29,6 +29,7 @@ import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.LogProcessor;
 import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.MaskingFormatter;
+import org.apache.camel.support.LanguageSupport;
 import org.apache.camel.support.processor.DefaultMaskingFormatter;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
@@ -47,7 +48,10 @@ public class LogReifier extends ProcessorReifier<LogDefinition> {
         String msg = parseString(definition.getMessage());
 
         // use simple language for the message string to give it more power
-        Expression exp = camelContext.resolveLanguage("simple").createExpression(msg);
+        Expression exp = null;
+        if (LanguageSupport.hasSimpleFunction(msg)) {
+            exp = camelContext.resolveLanguage("simple").createExpression(msg);
+        }
 
         // get logger explicitly set in the definition
         Logger logger = definition.getLogger();
@@ -91,8 +95,15 @@ public class LogReifier extends ProcessorReifier<LogDefinition> {
                 ? parse(LoggingLevel.class, definition.getLoggingLevel()) : LoggingLevel.INFO;
         CamelLogger camelLogger = new CamelLogger(logger, level, definition.getMarker());
 
-        return new LogProcessor(
-                exp, camelLogger, getMaskingFormatter(), camelContext.adapt(ExtendedCamelContext.class).getLogListeners());
+        if (exp != null) {
+            // dynamic log message via simple expression
+            return new LogProcessor(
+                    exp, camelLogger, getMaskingFormatter(), camelContext.adapt(ExtendedCamelContext.class).getLogListeners());
+        } else {
+            // static log message via string message
+            return new LogProcessor(
+                    msg, camelLogger, getMaskingFormatter(), camelContext.adapt(ExtendedCamelContext.class).getLogListeners());
+        }
     }
 
     private MaskingFormatter getMaskingFormatter() {


[camel] 01/02: camel-core - Optimize log EIP to eager compute whether should log and also avoid fire listenerns if they are empty

Posted by da...@apache.org.
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;