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

hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new 2e48ed3ffa make errors in logging pipeline propagate and add loglevel, 
fixes #7242 (#7243)
2e48ed3ffa is described below

commit 2e48ed3ffa8f78463dfd1a7a6d73f2e7f0fc193f
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Mon Jun 8 14:21:39 2026 +0200

    make errors in logging pipeline propagate and add loglevel, fixes #7242 
(#7243)
---
 .../hop/reflection/pipeline/meta/PipelineLog.java  | 129 ++-------------------
 .../pipeline/meta/PipelineLogEditor.java           |  26 +++++
 .../pipeline/xp/PipelineStartLoggingXp.java        |   8 +-
 .../hop/reflection/workflow/meta/WorkflowLog.java  | 129 ++-------------------
 .../workflow/meta/WorkflowLogEditor.java           |  26 +++++
 .../workflow/xp/WorkflowStartLoggingXp.java        |   8 +-
 .../meta/messages/messages_en_US.properties        |   1 +
 .../meta/messages/messages_en_US.properties        |   1 +
 8 files changed, 74 insertions(+), 254 deletions(-)

diff --git 
a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/meta/PipelineLog.java
 
b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/meta/PipelineLog.java
index b5f43e0bad..42e81f361f 100644
--- 
a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/meta/PipelineLog.java
+++ 
b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/meta/PipelineLog.java
@@ -20,6 +20,9 @@ package org.apache.hop.reflection.pipeline.meta;
 
 import java.util.ArrayList;
 import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.hop.core.logging.LogLevel;
 import org.apache.hop.metadata.api.HopMetadata;
 import org.apache.hop.metadata.api.HopMetadataBase;
 import org.apache.hop.metadata.api.HopMetadataProperty;
@@ -33,6 +36,8 @@ import org.apache.hop.metadata.api.IHopMetadata;
     image = "pipeline-log.svg",
     documentationUrl = "/metadata-types/pipeline-log.html",
     hopMetadataPropertyType = HopMetadataPropertyType.PIPELINE_LOG)
+@Getter
+@Setter
 public class PipelineLog extends HopMetadataBase implements IHopMetadata {
 
   @HopMetadataProperty private boolean enabled;
@@ -46,6 +51,9 @@ public class PipelineLog extends HopMetadataBase implements 
IHopMetadata {
   @HopMetadataProperty private String intervalInSeconds;
   @HopMetadataProperty private boolean executingAtEnd;
 
+  @HopMetadataProperty(storeWithCode = true)
+  private LogLevel logLevel;
+
   @HopMetadataProperty(hopMetadataPropertyType = 
HopMetadataPropertyType.PIPELINE_FILE)
   private List<PipelineToLogLocation> pipelinesToLog;
 
@@ -56,6 +64,7 @@ public class PipelineLog extends HopMetadataBase implements 
IHopMetadata {
     executingPeriodically = false;
     intervalInSeconds = "30";
     executingAtEnd = true;
+    logLevel = LogLevel.ERROR;
     pipelinesToLog = new ArrayList<>();
   }
 
@@ -84,124 +93,4 @@ public class PipelineLog extends HopMetadataBase implements 
IHopMetadata {
     this.executingAtEnd = executingAtEnd;
     this.pipelinesToLog = pipelinesToLog;
   }
-
-  /**
-   * Gets enabled
-   *
-   * @return value of enabled
-   */
-  public boolean isEnabled() {
-    return enabled;
-  }
-
-  /**
-   * @param enabled The enabled to set
-   */
-  public void setEnabled(boolean enabled) {
-    this.enabled = enabled;
-  }
-
-  /**
-   * Gets loggingParentsOnly
-   *
-   * @return value of loggingParentsOnly
-   */
-  public boolean isLoggingParentsOnly() {
-    return loggingParentsOnly;
-  }
-
-  /**
-   * @param loggingParentsOnly The loggingParentsOnly to set
-   */
-  public void setLoggingParentsOnly(boolean loggingParentsOnly) {
-    this.loggingParentsOnly = loggingParentsOnly;
-  }
-
-  /**
-   * Gets pipelineFilename
-   *
-   * @return value of pipelineFilename
-   */
-  public String getPipelineFilename() {
-    return pipelineFilename;
-  }
-
-  /**
-   * @param pipelineFilename The pipelineFilename to set
-   */
-  public void setPipelineFilename(String pipelineFilename) {
-    this.pipelineFilename = pipelineFilename;
-  }
-
-  /**
-   * Gets executingAtStart
-   *
-   * @return value of executingAtStart
-   */
-  public boolean isExecutingAtStart() {
-    return executingAtStart;
-  }
-
-  /**
-   * @param executingAtStart The executingAtStart to set
-   */
-  public void setExecutingAtStart(boolean executingAtStart) {
-    this.executingAtStart = executingAtStart;
-  }
-
-  /**
-   * Gets executingPeriodically
-   *
-   * @return value of executingPeriodically
-   */
-  public boolean isExecutingPeriodically() {
-    return executingPeriodically;
-  }
-
-  /**
-   * @param executingPeriodically The executingPeriodically to set
-   */
-  public void setExecutingPeriodically(boolean executingPeriodically) {
-    this.executingPeriodically = executingPeriodically;
-  }
-
-  /**
-   * Gets intervalInSeconds
-   *
-   * @return value of intervalInSeconds
-   */
-  public String getIntervalInSeconds() {
-    return intervalInSeconds;
-  }
-
-  /**
-   * @param intervalInSeconds The intervalInSeconds to set
-   */
-  public void setIntervalInSeconds(String intervalInSeconds) {
-    this.intervalInSeconds = intervalInSeconds;
-  }
-
-  /**
-   * Gets executingAtEnd
-   *
-   * @return value of executingAtEnd
-   */
-  public boolean isExecutingAtEnd() {
-    return executingAtEnd;
-  }
-
-  /**
-   * @param executingAtEnd The executingAtEnd to set
-   */
-  public void setExecutingAtEnd(boolean executingAtEnd) {
-    this.executingAtEnd = executingAtEnd;
-  }
-
-  public List<PipelineToLogLocation> getPipelinesToLog() {
-    return pipelinesToLog;
-  }
-
-  public void setPipelinesToLog(List<PipelineToLogLocation> pipelinesToLog) {
-    this.pipelinesToLog = pipelinesToLog;
-  }
 }
diff --git 
a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/meta/PipelineLogEditor.java
 
b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/meta/PipelineLogEditor.java
index f64ee786de..37e15b2d70 100644
--- 
a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/meta/PipelineLogEditor.java
+++ 
b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/meta/PipelineLogEditor.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hop.core.Const;
+import org.apache.hop.core.logging.LogLevel;
 import org.apache.hop.i18n.BaseMessages;
 import org.apache.hop.pipeline.PipelineHopMeta;
 import org.apache.hop.pipeline.PipelineMeta;
@@ -42,6 +43,7 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Event;
@@ -62,6 +64,7 @@ public class PipelineLogEditor extends 
MetadataEditor<PipelineLog> {
   private Button wEnabled;
   private Button wLoggingParentsOnly;
   private TextVar wFilename;
+  private Combo wLogLevel;
   private Button wAtStart;
   private Button wAtEnd;
   private Button wPeriodic;
@@ -199,6 +202,26 @@ public class PipelineLogEditor extends 
MetadataEditor<PipelineLog> {
     wFilename.setLayoutData(fdFilename);
     lastControl = wlFilename;
 
+    // The log level to run the logging pipeline at
+    //
+    Label wlLogLevel = new Label(parent, SWT.RIGHT);
+    PropsUi.setLook(wlLogLevel);
+    wlLogLevel.setText(BaseMessages.getString(PKG, 
"PipelineLoggingEditor.LogLevel.Label"));
+    FormData fdlLogLevel = new FormData();
+    fdlLogLevel.left = new FormAttachment(0, 0);
+    fdlLogLevel.right = new FormAttachment(middle, 0);
+    fdlLogLevel.top = new FormAttachment(lastControl, 2 * margin);
+    wlLogLevel.setLayoutData(fdlLogLevel);
+    wLogLevel = new Combo(parent, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER | 
SWT.LEFT);
+    PropsUi.setLook(wLogLevel);
+    wLogLevel.setItems(LogLevel.getLogLevelDescriptions());
+    FormData fdLogLevel = new FormData();
+    fdLogLevel.left = new FormAttachment(middle, margin);
+    fdLogLevel.right = new FormAttachment(100, 0);
+    fdLogLevel.top = new FormAttachment(wlLogLevel, 0, SWT.CENTER);
+    wLogLevel.setLayoutData(fdLogLevel);
+    lastControl = wlLogLevel;
+
     // Execute at start
     //
     Label wlAtStart = new Label(parent, SWT.RIGHT);
@@ -312,6 +335,7 @@ public class PipelineLogEditor extends 
MetadataEditor<PipelineLog> {
     wEnabled.addListener(SWT.Selection, modifyListener);
     wLoggingParentsOnly.addListener(SWT.Selection, modifyListener);
     wFilename.addListener(SWT.Modify, modifyListener);
+    wLogLevel.addListener(SWT.Modify, modifyListener);
     wAtStart.addListener(SWT.Selection, modifyListener);
     wAtEnd.addListener(SWT.Selection, modifyListener);
     wPeriodic.addListener(SWT.Selection, modifyListener);
@@ -423,6 +447,7 @@ public class PipelineLogEditor extends 
MetadataEditor<PipelineLog> {
     wEnabled.setSelection(pl.isEnabled());
     wLoggingParentsOnly.setSelection(pl.isLoggingParentsOnly());
     wFilename.setText(Const.NVL(pl.getPipelineFilename(), ""));
+    wLogLevel.setText(pl.getLogLevel().getDescription());
     wAtStart.setSelection(pl.isExecutingAtStart());
     wAtEnd.setSelection(pl.isExecutingAtEnd());
     wPeriodic.setSelection(pl.isExecutingPeriodically());
@@ -443,6 +468,7 @@ public class PipelineLogEditor extends 
MetadataEditor<PipelineLog> {
     pl.setEnabled(wEnabled.getSelection());
     pl.setLoggingParentsOnly(wLoggingParentsOnly.getSelection());
     pl.setPipelineFilename(wFilename.getText());
+    pl.setLogLevel(LogLevel.lookupDescription(wLogLevel.getText()));
     pl.setExecutingAtStart(wAtStart.getSelection());
     pl.setExecutingAtEnd(wAtEnd.getSelection());
     pl.setExecutingPeriodically(wPeriodic.getSelection());
diff --git 
a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/xp/PipelineStartLoggingXp.java
 
b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/xp/PipelineStartLoggingXp.java
index e0b7b8627a..ff9c0a1e45 100644
--- 
a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/xp/PipelineStartLoggingXp.java
+++ 
b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/xp/PipelineStartLoggingXp.java
@@ -28,7 +28,6 @@ import org.apache.hop.core.exception.HopRuntimeException;
 import org.apache.hop.core.extension.ExtensionPoint;
 import org.apache.hop.core.extension.IExtensionPoint;
 import org.apache.hop.core.logging.ILogChannel;
-import org.apache.hop.core.logging.LogLevel;
 import org.apache.hop.core.util.ExecutorUtil;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.core.vfs.HopVfs;
@@ -227,18 +226,13 @@ public class PipelineStartLoggingXp implements 
IExtensionPoint<Pipeline> {
     //
     LocalPipelineEngine loggingPipeline =
         new LocalPipelineEngine(loggingPipelineMeta, variables, pipeline);
-
-    // Do NOT link the logging pipeline to parent to avoid linking the 
stopped() signal
-    //
     loggingPipeline.setParentPipeline(null);
-    loggingPipeline.setParent(null);
 
     // Flag it as a logging pipeline so we don't log ourselves...
     //
     loggingPipeline.getExtensionDataMap().put(PIPELINE_LOGGING_FLAG, "Y");
 
-    // Only log errors
-    loggingPipeline.setLogLevel(LogLevel.ERROR);
+    loggingPipeline.setLogLevel(pipelineLog.getLogLevel());
     loggingPipeline.prepareExecution();
 
     // Grab the WorkflowLogging transforms and inject the pipeline 
information...
diff --git 
a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/meta/WorkflowLog.java
 
b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/meta/WorkflowLog.java
index 5b339d541d..69d3ccd0f9 100644
--- 
a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/meta/WorkflowLog.java
+++ 
b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/meta/WorkflowLog.java
@@ -20,6 +20,9 @@ package org.apache.hop.reflection.workflow.meta;
 
 import java.util.ArrayList;
 import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.hop.core.logging.LogLevel;
 import org.apache.hop.metadata.api.HopMetadata;
 import org.apache.hop.metadata.api.HopMetadataBase;
 import org.apache.hop.metadata.api.HopMetadataProperty;
@@ -33,6 +36,8 @@ import org.apache.hop.metadata.api.IHopMetadata;
     image = "workflow-log.svg",
     documentationUrl = "/metadata-types/workflow-log.html",
     hopMetadataPropertyType = HopMetadataPropertyType.WORKFLOW_LOG)
+@Getter
+@Setter
 public class WorkflowLog extends HopMetadataBase implements IHopMetadata {
 
   @HopMetadataProperty private boolean enabled;
@@ -46,6 +51,9 @@ public class WorkflowLog extends HopMetadataBase implements 
IHopMetadata {
   @HopMetadataProperty private String intervalInSeconds;
   @HopMetadataProperty private boolean executingAtEnd;
 
+  @HopMetadataProperty(storeWithCode = true)
+  private LogLevel logLevel;
+
   @HopMetadataProperty(hopMetadataPropertyType = 
HopMetadataPropertyType.WORKFLOW_FILE)
   private List<String> workflowToLog;
 
@@ -56,6 +64,7 @@ public class WorkflowLog extends HopMetadataBase implements 
IHopMetadata {
     executingPeriodically = false;
     intervalInSeconds = "30";
     executingAtEnd = true;
+    logLevel = LogLevel.ERROR;
     workflowToLog = new ArrayList<>();
   }
 
@@ -84,124 +93,4 @@ public class WorkflowLog extends HopMetadataBase implements 
IHopMetadata {
     this.executingAtEnd = executingAtEnd;
     this.workflowToLog = workflowToLog;
   }
-
-  /**
-   * Gets enabled
-   *
-   * @return value of enabled
-   */
-  public boolean isEnabled() {
-    return enabled;
-  }
-
-  /**
-   * @param enabled The enabled to set
-   */
-  public void setEnabled(boolean enabled) {
-    this.enabled = enabled;
-  }
-
-  /**
-   * Gets loggingParentsOnly
-   *
-   * @return value of loggingParentsOnly
-   */
-  public boolean isLoggingParentsOnly() {
-    return loggingParentsOnly;
-  }
-
-  /**
-   * @param loggingParentsOnly The loggingParentsOnly to set
-   */
-  public void setLoggingParentsOnly(boolean loggingParentsOnly) {
-    this.loggingParentsOnly = loggingParentsOnly;
-  }
-
-  /**
-   * Gets pipelineFilename
-   *
-   * @return value of pipelineFilename
-   */
-  public String getPipelineFilename() {
-    return pipelineFilename;
-  }
-
-  /**
-   * @param pipelineFilename The pipelineFilename to set
-   */
-  public void setPipelineFilename(String pipelineFilename) {
-    this.pipelineFilename = pipelineFilename;
-  }
-
-  /**
-   * Gets executingAtStart
-   *
-   * @return value of executingAtStart
-   */
-  public boolean isExecutingAtStart() {
-    return executingAtStart;
-  }
-
-  /**
-   * @param executingAtStart The executingAtStart to set
-   */
-  public void setExecutingAtStart(boolean executingAtStart) {
-    this.executingAtStart = executingAtStart;
-  }
-
-  /**
-   * Gets executingPeriodically
-   *
-   * @return value of executingPeriodically
-   */
-  public boolean isExecutingPeriodically() {
-    return executingPeriodically;
-  }
-
-  /**
-   * @param executingPeriodically The executingPeriodically to set
-   */
-  public void setExecutingPeriodically(boolean executingPeriodically) {
-    this.executingPeriodically = executingPeriodically;
-  }
-
-  /**
-   * Gets intervalInSeconds
-   *
-   * @return value of intervalInSeconds
-   */
-  public String getIntervalInSeconds() {
-    return intervalInSeconds;
-  }
-
-  /**
-   * @param intervalInSeconds The intervalInSeconds to set
-   */
-  public void setIntervalInSeconds(String intervalInSeconds) {
-    this.intervalInSeconds = intervalInSeconds;
-  }
-
-  /**
-   * Gets executingAtEnd
-   *
-   * @return value of executingAtEnd
-   */
-  public boolean isExecutingAtEnd() {
-    return executingAtEnd;
-  }
-
-  /**
-   * @param executingAtEnd The executingAtEnd to set
-   */
-  public void setExecutingAtEnd(boolean executingAtEnd) {
-    this.executingAtEnd = executingAtEnd;
-  }
-
-  public List<String> getWorkflowToLog() {
-    return workflowToLog;
-  }
-
-  public void setWorkflowToLog(List<String> workflowToLog) {
-    this.workflowToLog = workflowToLog;
-  }
 }
diff --git 
a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/meta/WorkflowLogEditor.java
 
b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/meta/WorkflowLogEditor.java
index 09d080f5f4..2baa101923 100644
--- 
a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/meta/WorkflowLogEditor.java
+++ 
b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/meta/WorkflowLogEditor.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hop.core.Const;
+import org.apache.hop.core.logging.LogLevel;
 import org.apache.hop.i18n.BaseMessages;
 import org.apache.hop.pipeline.PipelineHopMeta;
 import org.apache.hop.pipeline.PipelineMeta;
@@ -42,6 +43,7 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Event;
@@ -62,6 +64,7 @@ public class WorkflowLogEditor extends 
MetadataEditor<WorkflowLog> {
   private Button wEnabled;
   private Button wLoggingParentsOnly;
   private TextVar wFilename;
+  private Combo wLogLevel;
   private Button wAtStart;
   private Button wAtEnd;
   private Button wPeriodic;
@@ -201,6 +204,26 @@ public class WorkflowLogEditor extends 
MetadataEditor<WorkflowLog> {
     wFilename.setLayoutData(fdFilename);
     lastControl = wlFilename;
 
+    // The log level to run the logging pipeline at
+    //
+    Label wlLogLevel = new Label(parent, SWT.RIGHT);
+    PropsUi.setLook(wlLogLevel);
+    wlLogLevel.setText(BaseMessages.getString(PKG, 
"WorkflowLoggingEditor.LogLevel.Label"));
+    FormData fdlLogLevel = new FormData();
+    fdlLogLevel.left = new FormAttachment(0, 0);
+    fdlLogLevel.right = new FormAttachment(middle, 0);
+    fdlLogLevel.top = new FormAttachment(lastControl, 2 * margin);
+    wlLogLevel.setLayoutData(fdlLogLevel);
+    wLogLevel = new Combo(parent, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER | 
SWT.LEFT);
+    PropsUi.setLook(wLogLevel);
+    wLogLevel.setItems(LogLevel.getLogLevelDescriptions());
+    FormData fdLogLevel = new FormData();
+    fdLogLevel.left = new FormAttachment(middle, margin);
+    fdLogLevel.right = new FormAttachment(100, 0);
+    fdLogLevel.top = new FormAttachment(wlLogLevel, 0, SWT.CENTER);
+    wLogLevel.setLayoutData(fdLogLevel);
+    lastControl = wlLogLevel;
+
     // Execute at start
     //
     Label wlAtStart = new Label(parent, SWT.RIGHT);
@@ -314,6 +337,7 @@ public class WorkflowLogEditor extends 
MetadataEditor<WorkflowLog> {
     wEnabled.addListener(SWT.Selection, modifyListener);
     wLoggingParentsOnly.addListener(SWT.Selection, modifyListener);
     wFilename.addListener(SWT.Modify, modifyListener);
+    wLogLevel.addListener(SWT.Modify, modifyListener);
     wAtStart.addListener(SWT.Selection, modifyListener);
     wAtEnd.addListener(SWT.Selection, modifyListener);
     wPeriodic.addListener(SWT.Selection, modifyListener);
@@ -425,6 +449,7 @@ public class WorkflowLogEditor extends 
MetadataEditor<WorkflowLog> {
     wEnabled.setSelection(wl.isEnabled());
     wLoggingParentsOnly.setSelection(wl.isLoggingParentsOnly());
     wFilename.setText(Const.NVL(wl.getPipelineFilename(), ""));
+    wLogLevel.setText(wl.getLogLevel().getDescription());
     wAtStart.setSelection(wl.isExecutingAtStart());
     wAtEnd.setSelection(wl.isExecutingAtEnd());
     wPeriodic.setSelection(wl.isExecutingPeriodically());
@@ -445,6 +470,7 @@ public class WorkflowLogEditor extends 
MetadataEditor<WorkflowLog> {
     pl.setEnabled(wEnabled.getSelection());
     pl.setLoggingParentsOnly(wLoggingParentsOnly.getSelection());
     pl.setPipelineFilename(wFilename.getText());
+    pl.setLogLevel(LogLevel.lookupDescription(wLogLevel.getText()));
     pl.setExecutingAtStart(wAtStart.getSelection());
     pl.setExecutingAtEnd(wAtEnd.getSelection());
     pl.setExecutingPeriodically(wPeriodic.getSelection());
diff --git 
a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/xp/WorkflowStartLoggingXp.java
 
b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/xp/WorkflowStartLoggingXp.java
index ea1b6e2bf9..507bae6349 100644
--- 
a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/xp/WorkflowStartLoggingXp.java
+++ 
b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/xp/WorkflowStartLoggingXp.java
@@ -27,7 +27,6 @@ import org.apache.hop.core.exception.HopRuntimeException;
 import org.apache.hop.core.extension.ExtensionPoint;
 import org.apache.hop.core.extension.IExtensionPoint;
 import org.apache.hop.core.logging.ILogChannel;
-import org.apache.hop.core.logging.LogLevel;
 import org.apache.hop.core.util.ExecutorUtil;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.core.vfs.HopVfs;
@@ -191,17 +190,12 @@ public class WorkflowStartLoggingXp implements 
IExtensionPoint<IWorkflowEngine<W
     //
     LocalPipelineEngine loggingPipeline =
         new LocalPipelineEngine(loggingPipelineMeta, variables, workflow);
-
-    // Do NOT link to parent to avoid stopped() being transferred to the 
logging pipeline(s).
-    loggingPipeline.setParent(null);
     loggingPipeline.setParentWorkflow(null);
 
     // Flag it as a logging pipeline so we don't log ourselves...
     //
     
loggingPipeline.getExtensionDataMap().put(PipelineStartLoggingXp.PIPELINE_LOGGING_FLAG,
 "Y");
-
-    // Only log errors
-    loggingPipeline.setLogLevel(LogLevel.ERROR);
+    loggingPipeline.setLogLevel(pipelineLog.getLogLevel());
     loggingPipeline.prepareExecution();
 
     // Grab the WorkflowLogging transforms and inject the pipeline 
information...
diff --git 
a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/pipeline/meta/messages/messages_en_US.properties
 
b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/pipeline/meta/messages/messages_en_US.properties
index 9e0c2c0e3a..9da71fef93 100644
--- 
a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/pipeline/meta/messages/messages_en_US.properties
+++ 
b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/pipeline/meta/messages/messages_en_US.properties
@@ -22,6 +22,7 @@ PipelineLoggingEditor.Enabled.Label=Enabled
 PipelineLoggingEditor.Filename.Label=Pipeline executed to capture logging
 PipelineLoggingEditor.Interval.Label=Interval in seconds
 PipelineLoggingEditor.LoggingParentsOnly.Label=Logging parent pipelines only
+PipelineLoggingEditor.LogLevel.Label=Logging level of the logging pipeline
 PipelineLoggingEditor.Name.Label=Name
 PipelineLoggingEditor.Periodic.Label=Execute periodically during execution
 PipelineLoggingEditor.Sources.Label=Capture output of the following pipelines
diff --git 
a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/workflow/meta/messages/messages_en_US.properties
 
b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/workflow/meta/messages/messages_en_US.properties
index 7839d404ed..18aac50d37 100644
--- 
a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/workflow/meta/messages/messages_en_US.properties
+++ 
b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/workflow/meta/messages/messages_en_US.properties
@@ -22,6 +22,7 @@ WorkflowLoggingEditor.Enabled.Label=Enabled
 WorkflowLoggingEditor.Filename.Label=Pipeline executed to capture logging
 WorkflowLoggingEditor.Interval.Label=Interval in seconds
 WorkflowLoggingEditor.LoggingParentsOnly.Label=Logging parent workflows only
+WorkflowLoggingEditor.LogLevel.Label=Logging level of the logging pipeline
 WorkflowLoggingEditor.Name.Label=Name
 WorkflowLoggingEditor.Periodic.Label=Execute periodically during execution
 WorkflowLoggingEditor.Sources.Label=Capture output of the following workflows

Reply via email to