Ideas:

```yaml
type: io.kestra.core.task.log.Log
level: INFO
message: "Hello World"
```

```yaml
type: io.kestra.core.task.log.Log
level: INFO
message: 
  - "Hello World"
  - "Hello Kestra"
```
```suggestion
        } else if (this.message instanceof Collection) {
``` ```suggestion
            messages.forEach(throwConsumer(message -> {
```

never use this, throw `RuntimeException` is a pain 
```java
                try {
                    render = runContext.render(message);
                } catch (IllegalVariableEvaluationException e) {
                    throw new RuntimeException(e);
                }
                
``` to avoid duplication make the `Echo` task call the `Log` one 
  You should also add an example with a list of message misses `@Shema` with a description misses `@Shema` with a description, don't forget to add an `anyOff`. ```suggestion
    title = "Task that log a message in the execution log.",
``` I think you can remove this description, people know the purpose of a log ```suggestion
            String[].class
``` Thanks to this the JSON schema will know that the item in the list must be strings ```suggestion
            Collection<String> messages = (Collection<String>) this.message;
``` Don't cast on implementation, always prefere to use the interface.
If Collection didn't fit, use List instead.
It's a principle called "coding against interface"  Should be in the log package not the debug package (the same where the Fetch task will be)
Rename the Echo task to Log
### Feature description

Rename the Echo task to Log as it's a log and not an echo.
It should also be better to live in a different package as it's not a debug per see.

Naming task is important now that we have autocomplete!
In the meantime, we can improve it (like allowing log of multiple message at once).
core/src/main/java/io/kestra/core/tasks/debugs/Echo.java ui/src/components/onboarding/VueTour.vue
core/src/main/java/io/kestra/core/tasks/debugs/Echo.java core/src/main/java/io/kestra/core/tasks/log/Log.java core/src/main/resources/icons/io.kestra.core.tasks.log.Log.svg ui/src/components/onboarding/VueTour.vue
core/src/test/java/io/kestra/core/runners/RunContextTest.java core/src/test/java/io/kestra/core/tasks/flows/TemplateTest.java core/src/test/resources/flows/invalids/duplicate-parallel.yaml core/src/test/resources/flows/tests/invalid-task-defaults.yaml core/src/test/resources/flows/tests/with-template.yaml core/src/test/resources/flows/valids/bash-warning.yaml core/src/test/resources/flows/valids/disable-error.yaml core/src/test/resources/flows/valids/disable-simple.yaml core/src/test/resources/flows/valids/errors.yaml core/src/test/resources/flows/valids/full.yaml core/src/test/resources/flows/valids/logs.yaml core/src/test/resources/flows/valids/restart_always_failed.yaml core/src/test/resources/flows/valids/restart_local_errors.yaml core/src/test/resources/flows/valids/retry-failed.yaml core/src/test/resources/flows/valids/retry-success.yaml jdbc/src/test/java/io/kestra/jdbc/repository/AbstractJdbcFlowRepositoryTest.java webserver/src/test/java/io/kestra/webserver/controllers/ErrorControllerTest.java
diff --git a/core/src/main/java/io/kestra/core/tasks/debugs/Echo.java b/core/src/main/java/io/kestra/core/tasks/debugs/Echo.java
index 31611604ca..2e8e0cb94b 100644
--- a/core/src/main/java/io/kestra/core/tasks/debugs/Echo.java
+++ b/core/src/main/java/io/kestra/core/tasks/debugs/Echo.java
@@ -1,6 +1,7 @@
 package io.kestra.core.tasks.debugs;
 
 import io.kestra.core.models.annotations.PluginProperty;
+import io.kestra.core.tasks.log.Log;
 import io.micronaut.core.annotation.NonNull;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
@@ -11,7 +12,6 @@
 import io.kestra.core.models.tasks.Task;
 import io.kestra.core.models.tasks.VoidOutput;
 import io.kestra.core.runners.RunContext;
-import org.slf4j.Logger;
 import org.slf4j.event.Level;
 
 import javax.validation.constraints.NotBlank;
@@ -36,6 +36,7 @@
         )
     }
 )
+@Deprecated
 public class Echo extends Task implements RunnableTask<VoidOutput> {
     @NonNull
     @NotBlank
@@ -48,30 +49,11 @@ public class Echo extends Task implements RunnableTask<VoidOutput> {
 
     @Override
     public VoidOutput run(RunContext runContext) throws Exception {
-        Logger logger = runContext.logger();
-
-        String render = runContext.render(this.format);
-
-        switch (this.level) {
-            case TRACE:
-                logger.trace(render);
-                break;
-            case DEBUG:
-                logger.debug(render);
-                break;
-            case INFO:
-                logger.info(render);
-                break;
-            case WARN:
-                logger.warn(render);
-                break;
-            case ERROR:
-                logger.error(render);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid log level '" + this.level + "'");
-        }
-
+        Log log = Log.builder()
+            .level(this.level)
+            .message(this.format)
+            .build();
+        log.run(runContext);
         return null;
     }
 }
diff --git a/core/src/main/java/io/kestra/core/tasks/log/Log.java b/core/src/main/java/io/kestra/core/tasks/log/Log.java
new file mode 100644
index 0000000000..05f85ee75a
--- /dev/null
+++ b/core/src/main/java/io/kestra/core/tasks/log/Log.java
@@ -0,0 +1,113 @@
+package io.kestra.core.tasks.log;
+
+import io.kestra.core.models.annotations.Example;
+import io.kestra.core.models.annotations.Plugin;
+import io.kestra.core.models.annotations.PluginProperty;
+import io.kestra.core.models.tasks.RunnableTask;
+import io.kestra.core.models.tasks.Task;
+import io.kestra.core.models.tasks.VoidOutput;
+import io.kestra.core.runners.RunContext;
+import io.micronaut.core.annotation.NonNull;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+import org.slf4j.Logger;
+import org.slf4j.event.Level;
+
+import javax.validation.constraints.NotBlank;
+import java.util.Collection;
+
+import static io.kestra.core.utils.Rethrow.throwConsumer;
+
+@SuperBuilder
+@ToString
+@EqualsAndHashCode
+@Getter
+@NoArgsConstructor
+@Schema(
+    title = "Log a message in the task logs"
+)
+@Plugin(
+    examples = {
+        @Example(
+            code = {
+                "level: WARN",
+                "message: \"{{task.id}} > {{taskrun.startDate}}\""
+            }
+        ),
+        @Example(
+            code = {
+                "level: WARN",
+                "message: " +
+                "   - 'Task id : \"{{task.id}}\"'" +
+                "   - 'Start date: \"{{taskrun.startDate}}\"'"
+            }
+        )
+    }
+)
+public class Log extends Task implements RunnableTask<VoidOutput> {
+    @Schema(
+        title = "The message(s) to log",
+        description = "Can be a string or an array of string",
+        anyOf = {
+            String.class,
+            String[].class
+        }
+    )
+    @NonNull
+    @NotBlank
+    @PluginProperty(dynamic = true)
+    private Object message;
+
+    @Schema(
+        title = "The log level"
+    )
+    @Builder.Default
+    @PluginProperty
+    private Level level = Level.INFO;
+
+    @Override
+    public VoidOutput run(RunContext runContext) throws Exception {
+        Logger logger = runContext.logger();
+
+        if(this.message instanceof String) {
+            String render = runContext.render((String) this.message);
+            this.log(logger, this.level, render);
+        } else if (this.message instanceof Collection) {
+            Collection<String> messages = (Collection<String>) this.message;
+            messages.forEach(throwConsumer(message -> {
+                String render;
+                render = runContext.render(message);
+                this.log(logger, this.level, render);
+            }));
+        } else {
+            throw new IllegalArgumentException("Invalid message type '" + this.message.getClass() + "'");
+        }
+
+        return null;
+    }
+
+    public void log(Logger logger, Level level, String message) {
+        switch (this.level) {
+            case TRACE:
+                logger.trace(message);
+                break;
+            case DEBUG:
+                logger.debug(message);
+                break;
+            case INFO:
+                logger.info(message);
+                break;
+            case WARN:
+                logger.warn(message);
+                break;
+            case ERROR:
+                logger.error(message);
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid log level '" + this.level + "'");
+        }
+    }
+}
+
+
diff --git a/core/src/main/resources/icons/io.kestra.core.tasks.log.Log.svg b/core/src/main/resources/icons/io.kestra.core.tasks.log.Log.svg
new file mode 100644
index 0000000000..6d751be7f4
--- /dev/null
+++ b/core/src/main/resources/icons/io.kestra.core.tasks.log.Log.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"
+     preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"
+     style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);">
+    <path
+        d="M18 7c-1.1 0-2 .9-2 2v6c0 1.1.9 2 2 2h2c1.1 0 2-.9 2-2v-4h-2v4h-2V9h4V7h-4M2 7v10h6v-2H4V7H2m9 0c-1.1 0-2 .9-2 2v6c0 1.1.9 2 2 2h2c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2h-2m0 2h2v6h-2V9z"
+        fill="#0D1523"/>
+</svg>
\ No newline at end of file
diff --git a/ui/src/components/onboarding/VueTour.vue b/ui/src/components/onboarding/VueTour.vue
index fbee908d59..271bc874ee 100644
--- a/ui/src/components/onboarding/VueTour.vue
+++ b/ui/src/components/onboarding/VueTour.vue
@@ -318,8 +318,8 @@
                     "  # " + this.$t("onboarding-flow.taskLog1") + "\n" +
                         "  # " + this.$t("onboarding-flow.taskLog2") + "\n" +
                         "  - id: log\n" +
-                        "    type: io.kestra.core.tasks.debugs.Echo\n" +
-                        "    format: The flow starts",
+                        "    type: io.kestra.core.tasks.log.Log\n" +
+                        "    message: The flow starts",
                     "  # " + this.$t("onboarding-flow.taskDL") + "\n" +
                         "  - id: downloadData\n" +
                         "    type: io.kestra.plugin.fs.http.Download\n" +

diff --git a/core/src/test/java/io/kestra/core/runners/RunContextTest.java b/core/src/test/java/io/kestra/core/runners/RunContextTest.java
index f9cd3af1e9..05608fa27d 100644
--- a/core/src/test/java/io/kestra/core/runners/RunContextTest.java
+++ b/core/src/test/java/io/kestra/core/runners/RunContextTest.java
@@ -70,7 +70,7 @@ void logs() throws TimeoutException {
         filters = TestsUtils.filterLogs(logs, execution.getTaskRunList().get(1));
         assertThat(filters, hasSize(1));
         assertThat(filters.get(0).getLevel(), is(Level.WARN));
-        assertThat(filters.get(0).getMessage(), is("second io.kestra.core.tasks.debugs.Echo"));
+        assertThat(filters.get(0).getMessage(), is("second io.kestra.core.tasks.log.Log"));
 
 
         filters = TestsUtils.filterLogs(logs, execution.getTaskRunList().get(2));
diff --git a/core/src/test/java/io/kestra/core/tasks/flows/TemplateTest.java b/core/src/test/java/io/kestra/core/tasks/flows/TemplateTest.java
index b6f8f7c05c..439dbed4ed 100644
--- a/core/src/test/java/io/kestra/core/tasks/flows/TemplateTest.java
+++ b/core/src/test/java/io/kestra/core/tasks/flows/TemplateTest.java
@@ -1,18 +1,20 @@
 package io.kestra.core.tasks.flows;
 
 import com.google.common.collect.ImmutableMap;
+import io.kestra.core.models.executions.Execution;
 import io.kestra.core.models.executions.LogEntry;
+import io.kestra.core.models.flows.State;
 import io.kestra.core.queues.QueueFactoryInterface;
 import io.kestra.core.queues.QueueInterface;
 import io.kestra.core.repositories.LocalFlowRepositoryLoader;
-import io.kestra.core.runners.ListenersTest;
-import io.kestra.core.tasks.debugs.Echo;
-import org.junit.jupiter.api.Test;
-import io.kestra.core.models.executions.Execution;
-import io.kestra.core.models.flows.State;
 import io.kestra.core.repositories.TemplateRepositoryInterface;
 import io.kestra.core.runners.AbstractMemoryRunnerTest;
+import io.kestra.core.runners.ListenersTest;
 import io.kestra.core.runners.RunnerUtils;
+import io.kestra.core.tasks.log.Log;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import org.junit.jupiter.api.Test;
 import org.slf4j.event.Level;
 
 import java.io.IOException;
@@ -23,8 +25,6 @@
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.TimeoutException;
-import jakarta.inject.Inject;
-import jakarta.inject.Named;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.hasSize;
@@ -42,7 +42,7 @@ public class TemplateTest extends AbstractMemoryRunnerTest {
     public static final io.kestra.core.models.templates.Template TEMPLATE_1 = io.kestra.core.models.templates.Template.builder()
         .id("template")
         .namespace("io.kestra.tests")
-        .tasks(Collections.singletonList(Echo.builder().id("test").type(Echo.class.getName()).format("{{ parent.outputs.args['my-forward'] }}").build())).build();
+        .tasks(Collections.singletonList(Log.builder().id("test").type(Log.class.getName()).message("{{ parent.outputs.args['my-forward'] }}").build())).build();
 
     public static void withTemplate(RunnerUtils runnerUtils, TemplateRepositoryInterface templateRepository, LocalFlowRepositoryLoader repositoryLoader, QueueInterface<LogEntry> logQueue) throws TimeoutException, IOException, URISyntaxException {
         templateRepository.create(TEMPLATE_1);
diff --git a/core/src/test/resources/flows/invalids/duplicate-parallel.yaml b/core/src/test/resources/flows/invalids/duplicate-parallel.yaml
index 3b36563449..629a54285a 100644
--- a/core/src/test/resources/flows/invalids/duplicate-parallel.yaml
+++ b/core/src/test/resources/flows/invalids/duplicate-parallel.yaml
@@ -4,8 +4,8 @@ namespace: io.kestra.tests
 
 tasks:
   - id: t3
-    type: io.kestra.core.tasks.debugs.Echo
-    format: third all optional args {{ outputs.t2.value }}
+    type: io.kestra.core.tasks.log.Log
+    message: third all optional args {{ outputs.t2.value }}
     retry:
       type: constant
       interval: PT15M
diff --git a/core/src/test/resources/flows/tests/invalid-task-defaults.yaml b/core/src/test/resources/flows/tests/invalid-task-defaults.yaml
index f285e28b27..4ca24663db 100644
--- a/core/src/test/resources/flows/tests/invalid-task-defaults.yaml
+++ b/core/src/test/resources/flows/tests/invalid-task-defaults.yaml
@@ -2,13 +2,13 @@ id: invalid-task-defaults
 namespace: io.kestra.tests
 
 taskDefaults:
-  - type: io.kestra.core.tasks.debugs.Echo
+  - type: io.kestra.core.tasks.log.Log
     values:
       level: WARN
       invalid: Default
 
 tasks:
   - id: first
-    type: io.kestra.core.tasks.debugs.Echo
+    type: io.kestra.core.tasks.log.Log
     level: WARN
-    format: "Never happen"
+    message: "Never happen"
diff --git a/core/src/test/resources/flows/tests/with-template.yaml b/core/src/test/resources/flows/tests/with-template.yaml
index 426511927c..edae4e9957 100644
--- a/core/src/test/resources/flows/tests/with-template.yaml
+++ b/core/src/test/resources/flows/tests/with-template.yaml
@@ -13,7 +13,7 @@ variables:
   var-2: '{{ var-1 }}'
 
 taskDefaults:
-  - type: io.kestra.core.tasks.debugs.Echo
+  - type: io.kestra.core.tasks.log.Log
     values:
       level: "ERROR"
 
diff --git a/core/src/test/resources/flows/valids/bash-warning.yaml b/core/src/test/resources/flows/valids/bash-warning.yaml
index ae9b872618..dbe9724ea5 100644
--- a/core/src/test/resources/flows/valids/bash-warning.yaml
+++ b/core/src/test/resources/flows/valids/bash-warning.yaml
@@ -9,5 +9,5 @@ tasks:
 
 errors:
   - id: error
-    type: io.kestra.core.tasks.debugs.Echo
-    format: second {{task.id}}
+    type: io.kestra.core.tasks.log.Log
+    message: second {{task.id}}
diff --git a/core/src/test/resources/flows/valids/disable-error.yaml b/core/src/test/resources/flows/valids/disable-error.yaml
index 043596ad78..151070647a 100644
--- a/core/src/test/resources/flows/valids/disable-error.yaml
+++ b/core/src/test/resources/flows/valids/disable-error.yaml
@@ -9,14 +9,14 @@ tasks:
 
 errors:
   - id: t2
-    type: io.kestra.core.tasks.debugs.Echo
-    format: second {{task.id}}
+    type: io.kestra.core.tasks.log.Log
+    message: second {{task.id}}
 
   - id: t3
-    type: io.kestra.core.tasks.debugs.Echo
-    format: third {{task.id}}
+    type: io.kestra.core.tasks.log.Log
+    message: third {{task.id}}
     disabled: true
 
   - id: t4
-    type: io.kestra.core.tasks.debugs.Echo
-    format: fourth {{task.id}}
+    type: io.kestra.core.tasks.log.Log
+    message: fourth {{task.id}}
diff --git a/core/src/test/resources/flows/valids/disable-simple.yaml b/core/src/test/resources/flows/valids/disable-simple.yaml
index 4a6b7a5dd3..c0bb05f47c 100644
--- a/core/src/test/resources/flows/valids/disable-simple.yaml
+++ b/core/src/test/resources/flows/valids/disable-simple.yaml
@@ -3,15 +3,15 @@ namespace: io.kestra.tests
 
 tasks:
 - id: t1
-  type: io.kestra.core.tasks.debugs.Echo
-  format: first {{task.id}}
+  type: io.kestra.core.tasks.log.Log
+  message: first {{task.id}}
   level: TRACE
 - id: t2
-  type: io.kestra.core.tasks.debugs.Echo
-  format: second {{task.type}}
+  type: io.kestra.core.tasks.log.Log
+  message: second {{task.type}}
   level: WARN
   disabled: true
 - id: t3
-  type: io.kestra.core.tasks.debugs.Echo
-  format: third {{flow.id}}
+  type: io.kestra.core.tasks.log.Log
+  message: third {{flow.id}}
   level: ERROR
diff --git a/core/src/test/resources/flows/valids/errors.yaml b/core/src/test/resources/flows/valids/errors.yaml
index 9ebb2ba270..dd26a8dfa4 100644
--- a/core/src/test/resources/flows/valids/errors.yaml
+++ b/core/src/test/resources/flows/valids/errors.yaml
@@ -8,8 +8,8 @@ tasks:
   - 'exit 1'
 errors:
   - id: t2
-    type: io.kestra.core.tasks.debugs.Echo
-    format: second {{task.id}}
+    type: io.kestra.core.tasks.log.Log
+    message: second {{task.id}}
 
   - id: t3
     type: io.kestra.core.tasks.flows.Parallel
diff --git a/core/src/test/resources/flows/valids/full.yaml b/core/src/test/resources/flows/valids/full.yaml
index e6d11f9d57..181387083a 100644
--- a/core/src/test/resources/flows/valids/full.yaml
+++ b/core/src/test/resources/flows/valids/full.yaml
@@ -20,8 +20,8 @@ tasks:
   format: second {{ execution.id }}
 
 - id: t3
-  type: io.kestra.core.tasks.debugs.Echo
-  format: third all optional args {{ outputs.t2.value }}
+  type: io.kestra.core.tasks.log.Log
+  message: third all optional args {{ outputs.t2.value }}
   timeout: PT60M
   retry:
     maxAttempt: 5
diff --git a/core/src/test/resources/flows/valids/logs.yaml b/core/src/test/resources/flows/valids/logs.yaml
index 1a4ff567b2..139c3d5a9f 100644
--- a/core/src/test/resources/flows/valids/logs.yaml
+++ b/core/src/test/resources/flows/valids/logs.yaml
@@ -6,20 +6,20 @@ labels:
   region: "Nord"
 
 taskDefaults:
-  - type: io.kestra.core.tasks.debugs.Echo
+  - type: io.kestra.core.tasks.log.Log
     values:
-      format: third {{flow.id}}
+      message: third {{flow.id}}
 
 tasks:
 - id: t1
-  type: io.kestra.core.tasks.debugs.Echo
-  format: first {{task.id}}
+  type: io.kestra.core.tasks.log.Log
+  message: first {{task.id}}
   level: TRACE
 - id: t2
-  type: io.kestra.core.tasks.debugs.Echo
-  format: second {{task.type}}
+  type: io.kestra.core.tasks.log.Log
+  message: second {{task.type}}
   level: WARN
 - id: t3
-  type: io.kestra.core.tasks.debugs.Echo
-  format: third {{flow.id}}
+  type: io.kestra.core.tasks.log.Log
+  message: third {{flow.id}}
   level: ERROR
diff --git a/core/src/test/resources/flows/valids/restart_always_failed.yaml b/core/src/test/resources/flows/valids/restart_always_failed.yaml
index 4609198822..900db00fdb 100644
--- a/core/src/test/resources/flows/valids/restart_always_failed.yaml
+++ b/core/src/test/resources/flows/valids/restart_always_failed.yaml
@@ -9,6 +9,6 @@ tasks:
       - 'exit 1'
 errors:
   - id: errorHandler
-    type: io.kestra.core.tasks.debugs.Echo
-    format: I'm failing {{task.id}}
+    type: io.kestra.core.tasks.log.Log
+    message: I'm failing {{task.id}}
     level: INFO
diff --git a/core/src/test/resources/flows/valids/restart_local_errors.yaml b/core/src/test/resources/flows/valids/restart_local_errors.yaml
index 7f1a5b51cc..7ee0e4f6e1 100644
--- a/core/src/test/resources/flows/valids/restart_local_errors.yaml
+++ b/core/src/test/resources/flows/valids/restart_local_errors.yaml
@@ -3,15 +3,15 @@ namespace: io.kestra.tests
 
 tasks:
   - id: before
-    type: io.kestra.core.tasks.debugs.Echo
-    format: I'm before
+    type: io.kestra.core.tasks.log.Log
+    message: I'm before
 
   - id: sequential
     type: io.kestra.core.tasks.flows.Sequential
     tasks:
     - id: close
-      type: io.kestra.core.tasks.debugs.Echo
-      format: I'm close to fail
+      type: io.kestra.core.tasks.log.Log
+      message: I'm close to fail
     - id: failStep
       type: io.kestra.core.tasks.scripts.Bash
       description: "This fails"
@@ -19,9 +19,9 @@ tasks:
         - 'exit 1'
     errors:
     - id: errorHandler
-      type: io.kestra.core.tasks.debugs.Echo
-      format: I'm failing {{task.id}}
+      type: io.kestra.core.tasks.log.Log
+      message: I'm failing {{task.id}}
 
   - id: after
-    type: io.kestra.core.tasks.debugs.Echo
-    format: I'm after
+    type: io.kestra.core.tasks.log.Log
+    message: I'm after
diff --git a/core/src/test/resources/flows/valids/retry-failed.yaml b/core/src/test/resources/flows/valids/retry-failed.yaml
index a5c2f8b733..67fd67459b 100644
--- a/core/src/test/resources/flows/valids/retry-failed.yaml
+++ b/core/src/test/resources/flows/valids/retry-failed.yaml
@@ -14,5 +14,5 @@ tasks:
 
 errors:
   - id: t2
-    type: io.kestra.core.tasks.debugs.Echo
-    format: second {{task.id}}
+    type: io.kestra.core.tasks.log.Log
+    message: second {{task.id}}
diff --git a/core/src/test/resources/flows/valids/retry-success.yaml b/core/src/test/resources/flows/valids/retry-success.yaml
index c51c2b8cd8..d5957c674d 100644
--- a/core/src/test/resources/flows/valids/retry-success.yaml
+++ b/core/src/test/resources/flows/valids/retry-success.yaml
@@ -15,5 +15,5 @@ tasks:
 
 errors:
   - id: never-happen
-    type: io.kestra.core.tasks.debugs.Echo
-    format: Never {{task.id}}
+    type: io.kestra.core.tasks.log.Log
+    message: Never {{task.id}}
diff --git a/jdbc/src/test/java/io/kestra/jdbc/repository/AbstractJdbcFlowRepositoryTest.java b/jdbc/src/test/java/io/kestra/jdbc/repository/AbstractJdbcFlowRepositoryTest.java
index b6c9d3afa3..039ce16fae 100644
--- a/jdbc/src/test/java/io/kestra/jdbc/repository/AbstractJdbcFlowRepositoryTest.java
+++ b/jdbc/src/test/java/io/kestra/jdbc/repository/AbstractJdbcFlowRepositoryTest.java
@@ -84,7 +84,7 @@ public void invalidFlow() {
                     "revision", 1,
                     "tasks", List.of(Map.of(
                         "id", "invalid",
-                        "type", "io.kestra.core.tasks.debugs.Echo",
+                        "type", "io.kestra.core.tasks.log.Log",
                         "level", "invalid"
                     )),
                     "deleted", false
diff --git a/webserver/src/test/java/io/kestra/webserver/controllers/ErrorControllerTest.java b/webserver/src/test/java/io/kestra/webserver/controllers/ErrorControllerTest.java
index 5b2bb83c61..241bff1307 100644
--- a/webserver/src/test/java/io/kestra/webserver/controllers/ErrorControllerTest.java
+++ b/webserver/src/test/java/io/kestra/webserver/controllers/ErrorControllerTest.java
@@ -2,7 +2,7 @@
 
 import com.google.common.collect.ImmutableMap;
 import io.kestra.core.models.flows.Flow;
-import io.kestra.core.tasks.debugs.Echo;
+import io.kestra.core.tasks.log.Log;
 import io.kestra.core.utils.IdUtils;
 import io.micronaut.core.type.Argument;
 import io.micronaut.http.HttpStatus;
@@ -83,8 +83,8 @@ void invalidEnum() {
             "namespace", "io.kestra.test",
             "tasks", Collections.singletonList(ImmutableMap.of(
                 "id", IdUtils.create(),
-                "type", Echo.class.getName(),
-                "format", "Yeah !",
+                "type", Log.class.getName(),
+                "message", "Yeah !",
                 "level", "WRONG"
             ))
         );
@@ -97,7 +97,7 @@ void invalidEnum() {
 
         String response = exception.getResponse().getBody(String.class).get();
         assertThat(response, containsString("Cannot deserialize value of type `org.slf4j.event.Level` from String \\\"WRONG\\\""));
-        assertThat(response, containsString("\"path\":\"io.kestra.core.models.flows.Flow[\\\"tasks\\\"] > java.util.ArrayList[0] > io.kestra.core.tasks.debugs.Echo[\\\"level\\\"]\""));
+        assertThat(response, containsString("\"path\":\"io.kestra.core.models.flows.Flow[\\\"tasks\\\"] > java.util.ArrayList[0] > io.kestra.core.tasks.log.Log[\\\"level\\\"]\""));
     }
 
 }
\ No newline at end of file
