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

wuzhiguo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/bigtop-manager.git


The following commit(s) were added to refs/heads/main by this push:
     new 2c82695  BIGTOP-4146: Reorganize task log files (#12)
2c82695 is described below

commit 2c826952eb4a40729633f635fef7efc3afc2e546
Author: Zhiguo Wu <[email protected]>
AuthorDate: Mon Jun 24 16:08:32 2024 +0800

    BIGTOP-4146: Reorganize task log files (#12)
---
 .gitignore                                         |  1 +
 .../agent/executor/AbstractCommandExecutor.java    | 12 ----
 .../agent/executor/ComponentCommandExecutor.java   |  2 +-
 .../agent/scheduler/DefaultCommandScheduler.java   |  4 ++
 .../src/main/resources/logback-spring.xml          | 76 ++++++++------------
 .../message/entity/command/CommandLogMessage.java  | 45 ------------
 .../common/message/serializer/KryoPoolHolder.java  |  2 -
 .../bigtop/manager/dao/entity/CommandLog.java      | 81 ----------------------
 .../dao/repository/CommandLogRepository.java       | 28 --------
 .../command/stage/runner/AbstractStageRunner.java  |  2 +
 .../server/service/impl/CommandLogServiceImpl.java | 40 +----------
 .../manager/server/ws/ServerWebSocketHandler.java  |  9 ---
 .../src/main/resources/logback-spring.xml          | 43 +++---------
 .../stack/bigtop/v3_3_0/hdfs/HdfsSetup.java        | 13 ++--
 .../bigtop/v3_3_0/zookeeper/ZookeeperSetup.java    |  3 +-
 .../manager/stack/common/log/TaskLogWriter.java    | 66 ------------------
 .../stack/common/repo/AptPackageManager.java       |  7 +-
 .../stack/common/repo/DnfPackageManager.java       |  7 +-
 .../stack/common/repo/YumPackageManager.java       |  7 +-
 .../manager/stack/common/utils/BaseParams.java     |  3 +-
 .../manager/stack/common/utils/LocalSettings.java  |  3 +-
 .../stack/common/utils/PropertiesUtils.java        |  9 ++-
 .../manager/stack/common/utils/XmlUtils.java       |  7 +-
 .../common/utils/linux/LinuxAccountUtils.java      | 13 ++--
 .../stack/common/utils/linux/LinuxFileUtils.java   | 27 ++++----
 .../stack/common/utils/linux/LinuxOSUtils.java     |  9 +--
 .../stack/common/utils/template/BaseTemplate.java  | 13 ++--
 .../stack/common/utils/template/TemplateUtils.java |  5 +-
 .../manager/stack/core/executor/StackExecutor.java | 14 +---
 .../manager/stack/core/hook/AbstractHook.java      |  3 +-
 .../stack/nop/v1_0_0/kafka/KafkaBrokerScript.java  | 13 ++--
 .../v1_0_0/zookeeper/ZookeeperClientScript.java    |  5 +-
 .../v1_0_0/zookeeper/ZookeeperServerScript.java    | 11 ++-
 33 files changed, 117 insertions(+), 466 deletions(-)

diff --git a/.gitignore b/.gitignore
index aa3e64d..e99a1b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,6 +40,7 @@ build/
 
 ### Log ###
 logs
+tasklogs
 *.log
 npm-debug.log*
 yarn-debug.log*
diff --git 
a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/AbstractCommandExecutor.java
 
b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/AbstractCommandExecutor.java
index 8beffd9..e54bd61 100644
--- 
a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/AbstractCommandExecutor.java
+++ 
b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/AbstractCommandExecutor.java
@@ -20,7 +20,6 @@ package org.apache.bigtop.manager.agent.executor;
 
 import org.apache.bigtop.manager.agent.holder.SpringContextHolder;
 import org.apache.bigtop.manager.common.constants.MessageConstants;
-import 
org.apache.bigtop.manager.common.message.entity.command.CommandLogMessage;
 import 
org.apache.bigtop.manager.common.message.entity.command.CommandRequestMessage;
 import 
org.apache.bigtop.manager.common.message.entity.command.CommandResponseMessage;
 import org.apache.bigtop.manager.common.shell.ShellResult;
@@ -68,15 +67,4 @@ public abstract class AbstractCommandExecutor implements 
CommandExecutor {
     }
 
     protected abstract void doExecute();
-
-    protected void writeBackCommandLog(String log) {
-        CommandLogMessage logMessage = new CommandLogMessage();
-        logMessage.setLog(log);
-        logMessage.setMessageId(commandRequestMessage.getMessageId());
-        logMessage.setHostname(commandRequestMessage.getHostname());
-        logMessage.setTaskId(commandRequestMessage.getTaskId());
-        logMessage.setStageId(commandRequestMessage.getStageId());
-        logMessage.setJobId(commandRequestMessage.getJobId());
-        SpringContextHolder.getAgentWebSocket().sendMessage(logMessage);
-    }
 }
diff --git 
a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/ComponentCommandExecutor.java
 
b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/ComponentCommandExecutor.java
index 6d4fb04..c7af474 100644
--- 
a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/ComponentCommandExecutor.java
+++ 
b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/ComponentCommandExecutor.java
@@ -49,7 +49,7 @@ public class ComponentCommandExecutor extends 
AbstractCommandExecutor {
         CommandPayload commandPayload =
                 
JsonUtils.readFromString(commandRequestMessage.getMessagePayload(), 
CommandPayload.class);
         log.info("[agent executeTask] taskEvent is: {}", 
commandRequestMessage);
-        ShellResult shellResult = StackExecutor.execute(commandPayload, 
this::writeBackCommandLog);
+        ShellResult shellResult = StackExecutor.execute(commandPayload);
 
         commandResponseMessage.setCode(shellResult.getExitCode());
         commandResponseMessage.setResult(shellResult.getResult());
diff --git 
a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/scheduler/DefaultCommandScheduler.java
 
b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/scheduler/DefaultCommandScheduler.java
index 230a62e..55eb8ba 100644
--- 
a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/scheduler/DefaultCommandScheduler.java
+++ 
b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/scheduler/DefaultCommandScheduler.java
@@ -22,6 +22,7 @@ import 
org.apache.bigtop.manager.agent.executor.CommandExecutor;
 import org.apache.bigtop.manager.agent.executor.CommandExecutors;
 import 
org.apache.bigtop.manager.common.message.entity.command.CommandRequestMessage;
 
+import org.slf4j.MDC;
 import org.springframework.stereotype.Component;
 
 import lombok.extern.slf4j.Slf4j;
@@ -45,10 +46,13 @@ public class DefaultCommandScheduler implements 
CommandScheduler {
     public void submit(CommandRequestMessage message) {
         queue.offer(() -> {
             try {
+                MDC.put("taskId", message.getTaskId().toString());
                 CommandExecutor commandExecutor = 
CommandExecutors.getCommandExecutor(message.getCommandMessageType());
                 commandExecutor.execute(message);
             } catch (Exception e) {
                 log.error("Error when running command", e);
+            } finally {
+                MDC.clear();
             }
         });
     }
diff --git a/bigtop-manager-agent/src/main/resources/logback-spring.xml 
b/bigtop-manager-agent/src/main/resources/logback-spring.xml
index 5f50ee1..dbde0db 100644
--- a/bigtop-manager-agent/src/main/resources/logback-spring.xml
+++ b/bigtop-manager-agent/src/main/resources/logback-spring.xml
@@ -19,76 +19,58 @@
 -->
 
 <configuration scan="true" scanPeriod="120 seconds">
-    <property name="log.base" value="logs"/>
-    <property scope="context" name="log.base.ctx" value="${log.base}"/>
+    <property name="log.base" value="logs" />
+    <property scope="context" name="log.base.ctx" value="${log.base}" />
 
     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
         <encoder>
-            <pattern>[%-5level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} [%thread] 
%logger{96}:[%line] - %msg%n</pattern>
+            <pattern>[%-5level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} [%thread] 
%logger{1}:[%line] - %m%n</pattern>
             <charset>UTF-8</charset>
         </encoder>
     </appender>
 
-    <appender name="WSLOGFILE" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.base}/ws.log</file>
-        <rollingPolicy 
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            
<fileNamePattern>${log.base}/ws.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <maxHistory>30</maxHistory>
-            <maxFileSize>200MB</maxFileSize>
-            <totalSizeCap>10GB</totalSizeCap>
-            <cleanHistoryOnStart>true</cleanHistoryOnStart>
-        </rollingPolicy>
-        <encoder>
-            <pattern>[%-5level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} [%thread] 
%logger{96}:[%line] - %msg%n</pattern>
-            <charset>UTF-8</charset>
-        </encoder>
-    </appender>
-    <appender name="STACKLOGFILE" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.base}/bigtop-manager-stack.log</file>
+    <appender name="AGENT_LOG_FILE" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.base}/bigtop-manager-agent.log</file>
         <rollingPolicy 
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            
<fileNamePattern>${log.base}/bigtop-manager-stack.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            
<fileNamePattern>${log.base}/bigtop-manager-agent.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
             <maxHistory>30</maxHistory>
             <maxFileSize>200MB</maxFileSize>
             <totalSizeCap>10GB</totalSizeCap>
             <cleanHistoryOnStart>true</cleanHistoryOnStart>
         </rollingPolicy>
         <encoder>
-            <pattern>[%-5level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} [%thread] 
%logger{96}:[%line] - %msg%n</pattern>
+            <pattern>[%-5level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} [%thread] 
%logger{1}:[%line] - %m%n</pattern>
             <charset>UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="AGENTLOGFILE" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.base}/bigtop-manager-agent.log</file>
+
+    <appender name="TASK_LOG_FILE" 
class="ch.qos.logback.classic.sift.SiftingAppender">
         <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
             <evaluator>
-                
<expression>logger.contains("org.apache.bigtop.manager.stack")</expression>
+                <expression>mdc.get("taskId") != null</expression>
             </evaluator>
-            <onMatch>DENY</onMatch>
-            <onMismatch>ACCEPT</onMismatch>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
         </filter>
-        <rollingPolicy 
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            
<fileNamePattern>${log.base}/bigtop-manager-agent.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <maxHistory>30</maxHistory>
-            <maxFileSize>200MB</maxFileSize>
-            <totalSizeCap>10GB</totalSizeCap>
-            <cleanHistoryOnStart>true</cleanHistoryOnStart>
-        </rollingPolicy>
-        <encoder>
-            <pattern>[%-5level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} [%thread] 
%logger{96}:[%line] - %msg%n</pattern>
-            <charset>UTF-8</charset>
-        </encoder>
+        <discriminator 
class="ch.qos.logback.classic.sift.MDCBasedDiscriminator">
+            <key>taskId</key>
+            <defaultValue>0</defaultValue>
+        </discriminator>
+        <sift>
+            <appender name="task-${taskId}" 
class="ch.qos.logback.core.FileAppender">
+                <file>tasklogs/task-${taskId}.log</file>
+                <encoder>
+                    <pattern>[%-5level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} - 
%m%n</pattern>
+                    <charset>UTF-8</charset>
+                </encoder>
+                <append>true</append>
+            </appender>
+        </sift>
     </appender>
 
-    <logger name="org.apache.bigtop.manager.agent.ws.AgentWebSocketHandler" 
level="INFO" additivity="true">
-        <appender-ref ref="WSLOGFILE"/>
-    </logger>
-
-    <logger name="org.apache.bigtop.manager.stack" level="INFO" 
additivity="true">
-        <appender-ref ref="STACKLOGFILE"/>
-    </logger>
-
     <root level="INFO">
-        <appender-ref ref="STDOUT"/>
-        <appender-ref ref="AGENTLOGFILE"/>
+        <appender-ref ref="STDOUT" />
+        <appender-ref ref="AGENT_LOG_FILE" />
+        <appender-ref ref="TASK_LOG_FILE" />
     </root>
 </configuration>
diff --git 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/command/CommandLogMessage.java
 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/command/CommandLogMessage.java
deleted file mode 100644
index a092d96..0000000
--- 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/command/CommandLogMessage.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bigtop.manager.common.message.entity.command;
-
-import org.apache.bigtop.manager.common.message.entity.BaseMessage;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@NoArgsConstructor
-@AllArgsConstructor
-public class CommandLogMessage extends BaseMessage {
-
-    private String log;
-
-    private String hostname;
-
-    private Long jobId;
-
-    private Long stageId;
-
-    private Long taskId;
-}
diff --git 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/serializer/KryoPoolHolder.java
 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/serializer/KryoPoolHolder.java
index e036967..b690d37 100644
--- 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/serializer/KryoPoolHolder.java
+++ 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/serializer/KryoPoolHolder.java
@@ -23,7 +23,6 @@ import 
org.apache.bigtop.manager.common.message.entity.BaseMessage;
 import org.apache.bigtop.manager.common.message.entity.BaseRequestMessage;
 import org.apache.bigtop.manager.common.message.entity.BaseResponseMessage;
 import org.apache.bigtop.manager.common.message.entity.HeartbeatMessage;
-import 
org.apache.bigtop.manager.common.message.entity.command.CommandLogMessage;
 import 
org.apache.bigtop.manager.common.message.entity.command.CommandMessageType;
 import 
org.apache.bigtop.manager.common.message.entity.command.CommandRequestMessage;
 import 
org.apache.bigtop.manager.common.message.entity.command.CommandResponseMessage;
@@ -62,7 +61,6 @@ public class KryoPoolHolder {
             kryo.register(HeartbeatMessage.class);
             kryo.register(CommandResponseMessage.class);
             kryo.register(CommandRequestMessage.class);
-            kryo.register(CommandLogMessage.class);
 
             // message pojo
             kryo.register(HostInfo.class);
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/entity/CommandLog.java
 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/entity/CommandLog.java
deleted file mode 100644
index 728bbff..0000000
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/entity/CommandLog.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bigtop.manager.dao.entity;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import jakarta.persistence.Basic;
-import jakarta.persistence.Column;
-import jakarta.persistence.ConstraintMode;
-import jakarta.persistence.Entity;
-import jakarta.persistence.FetchType;
-import jakarta.persistence.ForeignKey;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.Index;
-import jakarta.persistence.JoinColumn;
-import jakarta.persistence.Lob;
-import jakarta.persistence.ManyToOne;
-import jakarta.persistence.Table;
-import jakarta.persistence.TableGenerator;
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-@Entity
-@Table(
-        name = "command_log",
-        indexes = {
-            @Index(name = "idx_cl_job_id", columnList = "job_id"),
-            @Index(name = "idx_cl_stage_id", columnList = "stage_id"),
-            @Index(name = "idx_cl_task_id", columnList = "task_id")
-        })
-@TableGenerator(
-        name = "command_log_generator",
-        table = "sequence",
-        pkColumnName = "seq_name",
-        valueColumnName = "seq_count")
-public class CommandLog extends BaseEntity {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.TABLE, generator = 
"command_log_generator")
-    @Column(name = "id")
-    private Long id;
-
-    @Lob
-    @Basic(fetch = FetchType.LAZY)
-    @Column(name = "\"log\"", length = 16777216)
-    private String log;
-
-    @Column(name = "hostname")
-    private String hostname;
-
-    @ManyToOne
-    @JoinColumn(name = "job_id", foreignKey = 
@ForeignKey(ConstraintMode.NO_CONSTRAINT))
-    private Job job;
-
-    @ManyToOne
-    @JoinColumn(name = "stage_id", foreignKey = 
@ForeignKey(ConstraintMode.NO_CONSTRAINT))
-    private Stage stage;
-
-    @ManyToOne
-    @JoinColumn(name = "task_id", foreignKey = 
@ForeignKey(ConstraintMode.NO_CONSTRAINT))
-    private Task task;
-}
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/CommandLogRepository.java
 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/CommandLogRepository.java
deleted file mode 100644
index 65eb706..0000000
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/CommandLogRepository.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bigtop.manager.dao.repository;
-
-import org.apache.bigtop.manager.dao.entity.CommandLog;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-
-public interface CommandLogRepository extends JpaRepository<CommandLog, Long> {
-
-    CommandLog findByTaskIdEquals(Long taskId);
-}
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/runner/AbstractStageRunner.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/runner/AbstractStageRunner.java
index 57f1563..d7c085b 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/runner/AbstractStageRunner.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/runner/AbstractStageRunner.java
@@ -89,8 +89,10 @@ public abstract class AbstractStageRunner implements 
StageRunner {
                 boolean taskSuccess = res != null && res.getCode() == 
MessageConstants.SUCCESS_CODE;
 
                 if (taskSuccess) {
+                    commandLogService.onLogReceived(task.getId(), 
task.getHostname(), "Success!");
                     onTaskSuccess(task);
                 } else {
+                    commandLogService.onLogReceived(task.getId(), 
task.getHostname(), "Failed!");
                     onTaskFailure(task);
                 }
 
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/CommandLogServiceImpl.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/CommandLogServiceImpl.java
index 67d340e..945eb47 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/CommandLogServiceImpl.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/CommandLogServiceImpl.java
@@ -18,10 +18,6 @@
  */
 package org.apache.bigtop.manager.server.service.impl;
 
-import org.apache.bigtop.manager.dao.entity.CommandLog;
-import org.apache.bigtop.manager.dao.entity.Task;
-import org.apache.bigtop.manager.dao.repository.CommandLogRepository;
-import org.apache.bigtop.manager.dao.repository.TaskRepository;
 import org.apache.bigtop.manager.server.service.CommandLogService;
 
 import org.apache.commons.collections4.CollectionUtils;
@@ -30,7 +26,6 @@ import org.springframework.stereotype.Service;
 
 import reactor.core.publisher.FluxSink;
 
-import jakarta.annotation.Resource;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -39,12 +34,6 @@ import java.util.Map;
 @Service
 public class CommandLogServiceImpl implements CommandLogService {
 
-    @Resource
-    private TaskRepository taskRepository;
-
-    @Resource
-    private CommandLogRepository commandLogRepository;
-
     private final Map<Long, FluxSink<String>> taskSinks = new HashMap<>();
 
     private final Map<Long, List<String>> logs = new HashMap<>();
@@ -60,16 +49,7 @@ public class CommandLogServiceImpl implements 
CommandLogService {
             }
         } else {
             // Task already completed, get logs from database
-            CommandLog commandLog = 
commandLogRepository.findByTaskIdEquals(taskId);
-            if (commandLog != null && commandLog.getLog() != null) {
-                list = List.of(commandLog.getLog().split("\n"));
-                for (String log : list) {
-                    sink.next(log);
-                }
-            } else {
-                sink.next("Cannot find log for task: " + taskId + ", there 
might be something wrong.");
-            }
-
+            sink.next("Task finished, please check the log details on agent 
machine.");
             sink.complete();
         }
     }
@@ -80,15 +60,6 @@ public class CommandLogServiceImpl implements 
CommandLogService {
 
     @Override
     public void onLogStarted(Long taskId, String hostname) {
-        Task task = taskRepository.getReferenceById(taskId);
-
-        CommandLog commandLog = new CommandLog();
-        commandLog.setHostname(hostname);
-        commandLog.setTask(task);
-        commandLog.setStage(task.getStage());
-        commandLog.setJob(task.getJob());
-        commandLogRepository.save(commandLog);
-
         logs.put(taskId, new ArrayList<>());
     }
 
@@ -116,14 +87,5 @@ public class CommandLogServiceImpl implements 
CommandLogService {
         }
 
         logs.remove(taskId);
-        if (CollectionUtils.isNotEmpty(list)) {
-            CommandLog commandLog = 
commandLogRepository.findByTaskIdEquals(taskId);
-            commandLog.setLog(String.join("\n", list));
-            commandLogRepository.save(commandLog);
-        }
-    }
-
-    public static void sink(Long taskId, FluxSink<String> sink) {
-        sink.next("aaa");
     }
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/ws/ServerWebSocketHandler.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/ws/ServerWebSocketHandler.java
index 1ad30c0..b1c163c 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/ws/ServerWebSocketHandler.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/ws/ServerWebSocketHandler.java
@@ -21,11 +21,9 @@ package org.apache.bigtop.manager.server.ws;
 import org.apache.bigtop.manager.common.message.entity.BaseMessage;
 import org.apache.bigtop.manager.common.message.entity.BaseRequestMessage;
 import org.apache.bigtop.manager.common.message.entity.HeartbeatMessage;
-import 
org.apache.bigtop.manager.common.message.entity.command.CommandLogMessage;
 import 
org.apache.bigtop.manager.common.message.entity.command.CommandResponseMessage;
 import org.apache.bigtop.manager.common.message.entity.pojo.HostInfo;
 import org.apache.bigtop.manager.common.ws.AbstractBinaryWebSocketHandler;
-import org.apache.bigtop.manager.server.service.CommandLogService;
 
 import org.springframework.stereotype.Component;
 import org.springframework.web.socket.BinaryMessage;
@@ -35,7 +33,6 @@ import org.springframework.web.socket.WebSocketSession;
 import lombok.extern.slf4j.Slf4j;
 
 import jakarta.annotation.Nonnull;
-import jakarta.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -48,9 +45,6 @@ import java.util.concurrent.ConcurrentHashMap;
 @Component
 public class ServerWebSocketHandler extends AbstractBinaryWebSocketHandler {
 
-    @Resource
-    private CommandLogService commandLogService;
-
     private final Map<String, WebSocketSession> sessions = new 
ConcurrentHashMap<>();
 
     public static final Map<String, HeartbeatMessage> HEARTBEAT_MESSAGE_MAP = 
new ConcurrentHashMap<>();
@@ -93,9 +87,6 @@ public class ServerWebSocketHandler extends 
AbstractBinaryWebSocketHandler {
             handleHeartbeatMessage(session, heartbeatMessage);
         } else if (baseMessage instanceof CommandResponseMessage 
commandResponseMessage) {
             super.handleResponseMessage(commandResponseMessage);
-        } else if (baseMessage instanceof CommandLogMessage commandLogMessage) 
{
-            commandLogService.onLogReceived(
-                    commandLogMessage.getTaskId(), 
commandLogMessage.getHostname(), commandLogMessage.getLog());
         } else {
             log.error("Unrecognized message type: {}", 
baseMessage.getClass().getSimpleName());
         }
diff --git a/bigtop-manager-server/src/main/resources/logback-spring.xml 
b/bigtop-manager-server/src/main/resources/logback-spring.xml
index c4a1add..4a42d85 100644
--- a/bigtop-manager-server/src/main/resources/logback-spring.xml
+++ b/bigtop-manager-server/src/main/resources/logback-spring.xml
@@ -19,40 +19,18 @@
 -->
 
 <configuration scan="true" scanPeriod="120 seconds">
-    <property name="log.base" value="./logs"/>
-    <property scope="context" name="log.base.ctx" value="${log.base}"/>
+    <property name="log.base" value="logs" />
+    <property scope="context" name="log.base.ctx" value="${log.base}" />
 
     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
         <encoder>
-            <pattern>[%-5level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} [%thread] 
%logger{96}:[%line] - %msg%n</pattern>
+            <pattern>[%-5level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} [%thread] 
%logger{1}:[%line] - %m%n</pattern>
             <charset>UTF-8</charset>
         </encoder>
     </appender>
 
-    <appender name="WSLOGFILE" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.base}/ws.log</file>
-        <rollingPolicy 
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            
<fileNamePattern>${log.base}/ws.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <maxHistory>30</maxHistory>
-            <maxFileSize>200MB</maxFileSize>
-            <totalSizeCap>10GB</totalSizeCap>
-            <cleanHistoryOnStart>true</cleanHistoryOnStart>
-        </rollingPolicy>
-        <encoder>
-            <pattern>[%-5level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} [%thread] 
%logger{96}:[%line] - %msg%n</pattern>
-            <charset>UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <appender name="SERVERLOGFILE" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <appender name="SERVER_LOG_FILE" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.base}/bigtop-manager-server.log</file>
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
-            <evaluator>
-                
<expression>logger.contains("org.apache.bigtop.manager.server.ws.ServerWebSocketHandler")</expression>
-            </evaluator>
-            <onMatch>DENY</onMatch>
-            <onMismatch>ACCEPT</onMismatch>
-        </filter>
         <rollingPolicy 
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
             
<fileNamePattern>${log.base}/bigtop-manager-server.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
             <maxHistory>30</maxHistory>
@@ -61,20 +39,15 @@
             <cleanHistoryOnStart>true</cleanHistoryOnStart>
         </rollingPolicy>
         <encoder>
-            <pattern>[%-5level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} [%thread] 
%logger{96}:[%line] - %msg%n</pattern>
+            <pattern>[%-5level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} [%thread] 
%logger{1}:[%line] - %m%n</pattern>
             <charset>UTF-8</charset>
         </encoder>
     </appender>
 
-    <logger name="org.apache.bigtop.manager.server.ws.ServerWebSocketHandler" 
level="INFO" additivity="false">
-        <appender-ref ref="WSLOGFILE"/>
-        <appender-ref ref="STDOUT"/>
-    </logger>
-
-    <logger name="eclipselink.logging" level="DEBUG" additivity="true"/>
+    <logger name="eclipselink.logging" level="DEBUG" additivity="true" />
 
     <root level="INFO">
-        <appender-ref ref="SERVERLOGFILE"/>
-        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="STDOUT" />
+        <appender-ref ref="SERVER_LOG_FILE" />
     </root>
 </configuration>
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/HdfsSetup.java
 
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/HdfsSetup.java
index 90466b5..0fca2f6 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/HdfsSetup.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/HdfsSetup.java
@@ -24,7 +24,6 @@ import org.apache.bigtop.manager.spi.stack.Params;
 import org.apache.bigtop.manager.stack.bigtop.v3_3_0.kafka.KafkaParams;
 import org.apache.bigtop.manager.stack.common.enums.ConfigType;
 import org.apache.bigtop.manager.stack.common.exception.StackException;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 import org.apache.bigtop.manager.stack.common.utils.linux.LinuxFileUtils;
 import org.apache.bigtop.manager.stack.common.utils.linux.LinuxOSUtils;
 
@@ -47,7 +46,7 @@ public class HdfsSetup {
     }
 
     public static ShellResult config(Params params, String componentName) {
-        TaskLogWriter.info("starting HDFS config");
+        log.info("starting HDFS config");
         HdfsParams hdfsParams = (HdfsParams) params;
 
         String confDir = hdfsParams.confDir();
@@ -177,7 +176,7 @@ public class HdfsSetup {
         for (String nameNodeFormattedDir : 
hdfsParams.getNameNodeFormattedDirs()) {
             File file = new File(nameNodeFormattedDir);
             if (file.exists() && file.isDirectory()) {
-                TaskLogWriter.info(nameNodeFormattedDir + "exists. Namenode 
DFS already formatted");
+                log.info("{} exists. Namenode DFS already formatted", 
nameNodeFormattedDir);
                 isFormatted = true;
             }
         }
@@ -196,14 +195,14 @@ public class HdfsSetup {
         for (String nameNodeDir : nameNodeDirs) {
             File file = new File(nameNodeDir);
             if (!file.exists()) {
-                TaskLogWriter.info("NameNode will not be formatted because the 
directory " + nameNodeDir
-                        + " is missing or cannot be checked for content.");
+                log.info(
+                        "NameNode will not be formatted because the directory 
{} is missing or cannot be checked for content.",
+                        nameNodeDir);
                 return true;
             } else {
                 File[] files = file.listFiles();
                 if (files != null && files.length > 0) {
-                    TaskLogWriter.info(
-                            "NameNode will not be formatted since " + 
nameNodeDir + " exists and contains content");
+                    log.info("NameNode will not be formatted since {} exists 
and contains content", nameNodeDir);
                     return true;
                 }
             }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperSetup.java
 
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperSetup.java
index 380c3e5..57ee220 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperSetup.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperSetup.java
@@ -22,7 +22,6 @@ import org.apache.bigtop.manager.common.shell.ShellResult;
 import org.apache.bigtop.manager.common.utils.NetUtils;
 import org.apache.bigtop.manager.spi.stack.Params;
 import org.apache.bigtop.manager.stack.common.enums.ConfigType;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 import org.apache.bigtop.manager.stack.common.utils.LocalSettings;
 import org.apache.bigtop.manager.stack.common.utils.linux.LinuxFileUtils;
 
@@ -43,7 +42,7 @@ import static 
org.apache.bigtop.manager.common.constants.Constants.PERMISSION_75
 public class ZookeeperSetup {
 
     public static ShellResult config(Params params) {
-        TaskLogWriter.info("ZookeeperSetup config");
+        log.info("ZookeeperSetup config");
         ZookeeperParams zookeeperParams = (ZookeeperParams) params;
 
         String confDir = zookeeperParams.confDir();
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/log/TaskLogWriter.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/log/TaskLogWriter.java
deleted file mode 100644
index cff9265..0000000
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/log/TaskLogWriter.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bigtop.manager.stack.common.log;
-
-import java.time.ZoneId;
-import java.time.ZoneOffset;
-import java.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.function.Consumer;
-
-public class TaskLogWriter {
-
-    private static Consumer<String> writer;
-
-    public static void setWriter(Consumer<String> writer) {
-        TaskLogWriter.writer = writer;
-    }
-
-    public static void info(String str) {
-        if (TaskLogWriter.writer != null) {
-            TaskLogWriter.writer.accept("[INFO ] " + getFormattedTime() + " - 
" + str);
-        }
-    }
-
-    public static void warn(String str) {
-        if (TaskLogWriter.writer != null) {
-            TaskLogWriter.writer.accept("[WARN ] " + getFormattedTime() + " - 
" + str);
-        }
-    }
-
-    public static void error(String str) {
-        if (TaskLogWriter.writer != null) {
-            TaskLogWriter.writer.accept("[ERROR] " + getFormattedTime() + " - 
" + str);
-        }
-    }
-
-    private static String getFormattedTime() {
-        ZoneId zoneId = ZoneOffset.systemDefault();
-        ZonedDateTime zonedDateTime = ZonedDateTime.now(zoneId);
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd 
HH:mm:ss.SSS");
-        String time = zonedDateTime.format(formatter);
-        String offset = zonedDateTime.getOffset().getId().replace("Z", 
"+00:00");
-
-        return time + " " + offset;
-    }
-
-    public static void clearWriter() {
-        TaskLogWriter.writer = null;
-    }
-}
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/repo/AptPackageManager.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/repo/AptPackageManager.java
index 3b239e5..cf2ebd3 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/repo/AptPackageManager.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/repo/AptPackageManager.java
@@ -23,7 +23,6 @@ import org.apache.bigtop.manager.common.shell.ShellResult;
 import org.apache.bigtop.manager.spi.stack.PackageManager;
 import org.apache.bigtop.manager.stack.common.enums.PackageManagerType;
 import org.apache.bigtop.manager.stack.common.exception.StackException;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import com.google.auto.service.AutoService;
 import lombok.extern.slf4j.Slf4j;
@@ -50,7 +49,7 @@ public class AptPackageManager implements PackageManager {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters, 
log::info);
-            TaskLogWriter.info("[AptPackageManager] [installPackage] output: " 
+ output);
+            log.info("[AptPackageManager] [installPackage] output: {}", 
output);
             return output;
         } catch (IOException e) {
             throw new StackException(e);
@@ -67,7 +66,7 @@ public class AptPackageManager implements PackageManager {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters, 
log::info);
-            TaskLogWriter.info("[AptPackageManager] [uninstallPackage] output: 
" + output);
+            log.info("[AptPackageManager] [uninstallPackage] output: {}", 
output);
             return output;
         } catch (IOException e) {
             throw new StackException(e);
@@ -82,7 +81,7 @@ public class AptPackageManager implements PackageManager {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters, 
log::info);
-            TaskLogWriter.info("[AptPackageManager] [listPackages] output: " + 
output);
+            log.info("[AptPackageManager] [listPackages] output: {}", output);
             return output.getOutput();
         } catch (IOException e) {
             throw new StackException(e);
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/repo/DnfPackageManager.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/repo/DnfPackageManager.java
index a800da3..59a5fb8 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/repo/DnfPackageManager.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/repo/DnfPackageManager.java
@@ -23,7 +23,6 @@ import org.apache.bigtop.manager.common.shell.ShellResult;
 import org.apache.bigtop.manager.spi.stack.PackageManager;
 import org.apache.bigtop.manager.stack.common.enums.PackageManagerType;
 import org.apache.bigtop.manager.stack.common.exception.StackException;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import com.google.auto.service.AutoService;
 import lombok.extern.slf4j.Slf4j;
@@ -49,7 +48,7 @@ public class DnfPackageManager implements PackageManager {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters, 
log::info);
-            TaskLogWriter.info("[DnfPackageManager] [installPackage] output: " 
+ output);
+            log.info("[DnfPackageManager] [installPackage] output: {}", 
output);
             return output;
         } catch (IOException e) {
             throw new StackException(e);
@@ -66,7 +65,7 @@ public class DnfPackageManager implements PackageManager {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters, 
log::info);
-            TaskLogWriter.info("[DnfPackageManager] [uninstallPackage] output: 
" + output);
+            log.info("[DnfPackageManager] [uninstallPackage] output: {}", 
output);
             return output;
         } catch (IOException e) {
             throw new StackException(e);
@@ -81,7 +80,7 @@ public class DnfPackageManager implements PackageManager {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters, 
log::info);
-            TaskLogWriter.info("[DnfPackageManager] [listPackages] output: " + 
output);
+            log.info("[DnfPackageManager] [listPackages] output: {}", output);
             return output.getOutput();
         } catch (IOException e) {
             throw new StackException(e);
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/repo/YumPackageManager.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/repo/YumPackageManager.java
index acbee9c..2df789c 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/repo/YumPackageManager.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/repo/YumPackageManager.java
@@ -23,7 +23,6 @@ import org.apache.bigtop.manager.common.shell.ShellResult;
 import org.apache.bigtop.manager.spi.stack.PackageManager;
 import org.apache.bigtop.manager.stack.common.enums.PackageManagerType;
 import org.apache.bigtop.manager.stack.common.exception.StackException;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import com.google.auto.service.AutoService;
 import lombok.extern.slf4j.Slf4j;
@@ -49,7 +48,7 @@ public class YumPackageManager implements PackageManager {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters, 
log::info);
-            TaskLogWriter.info("[RpmPackageManager] [installPackage] output: " 
+ output);
+            log.info("[RpmPackageManager] [installPackage] output: {}", 
output);
             return output;
         } catch (IOException e) {
             throw new StackException(e);
@@ -66,7 +65,7 @@ public class YumPackageManager implements PackageManager {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters, 
log::info);
-            TaskLogWriter.info("[RpmPackageManager] [uninstallPackage] output: 
" + output);
+            log.info("[RpmPackageManager] [uninstallPackage] output: {}", 
output);
             return output;
         } catch (IOException e) {
             throw new StackException(e);
@@ -81,7 +80,7 @@ public class YumPackageManager implements PackageManager {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters, 
log::info);
-            TaskLogWriter.info("[RpmPackageManager] [listPackages] output: " + 
output);
+            log.info("[RpmPackageManager] [listPackages] output: {}", output);
             return output.getOutput();
         } catch (IOException e) {
             throw new StackException(e);
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/BaseParams.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/BaseParams.java
index 34681e4..9bf2d60 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/BaseParams.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/BaseParams.java
@@ -25,7 +25,6 @@ import org.apache.bigtop.manager.common.utils.NetUtils;
 import org.apache.bigtop.manager.common.utils.os.OSDetection;
 import org.apache.bigtop.manager.spi.stack.Params;
 import org.apache.bigtop.manager.stack.common.annotations.GlobalParams;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import org.apache.commons.lang3.StringUtils;
 
@@ -67,7 +66,7 @@ public abstract class BaseParams implements Params {
                     globalParamsMap.putAll(invoke);
                 }
             } catch (Exception e) {
-                TaskLogWriter.warn("Get " + declaredMethod + " Params error: " 
+ e.getMessage());
+                log.warn("Get {} Params error", declaredMethod, e);
             }
         }
         globalParamsMap.remove("content");
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/LocalSettings.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/LocalSettings.java
index fa04b22..5d44465 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/LocalSettings.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/LocalSettings.java
@@ -24,7 +24,6 @@ import 
org.apache.bigtop.manager.common.message.entity.pojo.ClusterInfo;
 import org.apache.bigtop.manager.common.message.entity.pojo.ComponentInfo;
 import org.apache.bigtop.manager.common.message.entity.pojo.RepoInfo;
 import org.apache.bigtop.manager.common.utils.JsonUtils;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import lombok.extern.slf4j.Slf4j;
@@ -58,7 +57,7 @@ public class LocalSettings {
                 }
             }
         } catch (Exception e) {
-            TaskLogWriter.warn(CacheFiles.CONFIGURATIONS_INFO + " parse error: 
" + e.getMessage());
+            log.warn("{} parse error", CacheFiles.CONFIGURATIONS_INFO, e);
         }
 
         return configDataMap;
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/PropertiesUtils.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/PropertiesUtils.java
index 23738bc..14348da 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/PropertiesUtils.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/PropertiesUtils.java
@@ -19,7 +19,6 @@
 package org.apache.bigtop.manager.stack.common.utils;
 
 import org.apache.bigtop.manager.stack.common.exception.StackException;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -48,7 +47,7 @@ public class PropertiesUtils {
         try {
             properties.load(new FileReader(fileName, StandardCharsets.UTF_8));
         } catch (IOException e) {
-            TaskLogWriter.error("readProperties error: " + e.getMessage());
+            log.error("readProperties error", e);
             throw new StackException(e);
         }
 
@@ -74,7 +73,7 @@ public class PropertiesUtils {
             os.flush();
             os.close();
         } catch (Exception e) {
-            TaskLogWriter.error("writeProperties error: " + e.getMessage());
+            log.error("writeProperties error", e);
         }
     }
 
@@ -93,11 +92,11 @@ public class PropertiesUtils {
             properties.setProperty(String.valueOf(map.get("name")), 
String.valueOf(map.get("value")));
         }
 
-        TaskLogWriter.info("writeProperties: " + properties);
+        log.info("writeProperties: {}", properties);
         try {
             properties.store(new FileWriter(fileName, StandardCharsets.UTF_8), 
"Generated by Apache BigTop Manager.");
         } catch (IOException e) {
-            TaskLogWriter.error("writeProperties error: " + e.getMessage());
+            log.error("writeProperties error", e);
             throw new StackException(e);
         }
     }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/XmlUtils.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/XmlUtils.java
index 4d55d84..e007bea 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/XmlUtils.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/XmlUtils.java
@@ -19,7 +19,6 @@
 package org.apache.bigtop.manager.stack.common.utils;
 
 import org.apache.bigtop.manager.stack.common.exception.StackException;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -67,7 +66,7 @@ public class XmlUtils {
             Element configuration = document.createElement("configuration");
 
             for (Map.Entry<String, Object> entry : configMap.entrySet()) {
-                TaskLogWriter.info(entry.getKey() + " " + entry.getValue());
+                log.info("{} {}", entry.getKey(), entry.getValue());
                 Element property = document.createElement("property");
 
                 Element name = document.createElement("name");
@@ -90,9 +89,9 @@ public class XmlUtils {
             tf.setOutputProperty(OutputKeys.INDENT, "yes");
 
             tf.transform(new DOMSource(document), new StreamResult(new 
File(fileName)));
-            TaskLogWriter.info("writeXml " + fileName + " success");
+            log.info("writeXml {} success", fileName);
         } catch (TransformerException e) {
-            TaskLogWriter.error("writeXml error: " + e.getLocationAsString());
+            log.error("writeXml error", e);
             throw new StackException(e);
         }
     }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/linux/LinuxAccountUtils.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/linux/LinuxAccountUtils.java
index 1ed58c2..1e9467f 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/linux/LinuxAccountUtils.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/linux/LinuxAccountUtils.java
@@ -21,7 +21,6 @@ package org.apache.bigtop.manager.stack.common.utils.linux;
 import org.apache.bigtop.manager.common.shell.ShellExecutor;
 import org.apache.bigtop.manager.common.shell.ShellResult;
 import org.apache.bigtop.manager.stack.common.exception.StackException;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import org.apache.commons.lang3.StringUtils;
 
@@ -66,7 +65,7 @@ public class LinuxAccountUtils {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters);
-            TaskLogWriter.info("[AccountGroupUtils] [userDel] output: " + 
output);
+            log.info("[AccountGroupUtils] [userDel] output: {}", output);
         } catch (IOException e) {
             throw new StackException(e);
         }
@@ -154,7 +153,7 @@ public class LinuxAccountUtils {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters);
-            TaskLogWriter.info("[AccountGroupUtils] [userAdd] output: " + 
output);
+            log.info("[AccountGroupUtils] [userAdd] output: {}", output);
         } catch (IOException e) {
             throw new StackException(e);
         }
@@ -180,7 +179,7 @@ public class LinuxAccountUtils {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters);
-            TaskLogWriter.info("[AccountGroupUtils] [addGroup] output: " + 
output);
+            log.info("[AccountGroupUtils] [addGroup] output: {}", output);
         } catch (IOException e) {
             throw new StackException(e);
         }
@@ -229,7 +228,7 @@ public class LinuxAccountUtils {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters);
-            TaskLogWriter.info("[AccountGroupUtils] [addGroup] output: " + 
output);
+            log.info("[AccountGroupUtils] [addGroup] output: {}", output);
         } catch (IOException e) {
             throw new StackException(e);
         }
@@ -252,7 +251,7 @@ public class LinuxAccountUtils {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters);
-            TaskLogWriter.info("[AccountGroupUtils] [checkIfExistsGroup] 
output: " + output);
+            log.info("[AccountGroupUtils] [checkIfExistsGroup] output: {}", 
output);
             return output.getExitCode() == 0;
         } catch (IOException e) {
             throw new StackException(e);
@@ -275,7 +274,7 @@ public class LinuxAccountUtils {
 
         try {
             ShellResult output = ShellExecutor.execCommand(builderParameters);
-            TaskLogWriter.info("[AccountGroupUtils] [checkIfExistsUser] 
output: " + output);
+            log.info("[AccountGroupUtils] [checkIfExistsUser] output: {}", 
output);
             return output.getExitCode() == 0;
         } catch (IOException e) {
             throw new StackException(e);
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/linux/LinuxFileUtils.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/linux/LinuxFileUtils.java
index ed524ae..028be6e 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/linux/LinuxFileUtils.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/linux/LinuxFileUtils.java
@@ -22,7 +22,6 @@ import org.apache.bigtop.manager.common.constants.Constants;
 import org.apache.bigtop.manager.common.utils.JsonUtils;
 import org.apache.bigtop.manager.common.utils.YamlUtils;
 import org.apache.bigtop.manager.stack.common.enums.ConfigType;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 import org.apache.bigtop.manager.stack.common.utils.template.TemplateUtils;
 
 import org.apache.commons.lang3.StringUtils;
@@ -73,7 +72,7 @@ public class LinuxFileUtils {
             Object content,
             Object paramMap) {
         if (type == null || StringUtils.isBlank(filename) || content == null) {
-            TaskLogWriter.error("type, filename, content must not be null");
+            log.error("type, filename, content must not be null");
             return;
         }
 
@@ -88,7 +87,7 @@ public class LinuxFileUtils {
                 JsonUtils.writeToFile(filename, content);
                 break;
             case UNKNOWN:
-                TaskLogWriter.info("no need to write");
+                log.info("no need to write");
                 break;
         }
 
@@ -121,7 +120,7 @@ public class LinuxFileUtils {
             Object modelMap,
             Object paramMap) {
         if (StringUtils.isBlank(filename) || modelMap == null || 
StringUtils.isEmpty(template)) {
-            TaskLogWriter.error("type, filename, content, template must not be 
null");
+            log.error("type, filename, content, template must not be null");
             return;
         }
         TemplateUtils.map2CustomTemplate(template, filename, modelMap, 
paramMap);
@@ -139,7 +138,7 @@ public class LinuxFileUtils {
      */
     public static void updatePermissions(String dir, String permissions, 
boolean recursive) {
         if (StringUtils.isBlank(dir)) {
-            TaskLogWriter.error("dir must not be null");
+            log.error("dir must not be null");
             return;
         }
         permissions = StringUtils.isBlank(permissions) ? 
Constants.PERMISSION_644 : permissions;
@@ -148,9 +147,9 @@ public class LinuxFileUtils {
         Set<PosixFilePermission> perms = 
PosixFilePermissions.fromString(permissions);
         try {
             Files.setPosixFilePermissions(path, perms);
-            TaskLogWriter.info("Permissions set successfully.");
+            log.info("Permissions set successfully.");
         } catch (IOException e) {
-            TaskLogWriter.error("[updatePermissions] error: " + 
e.getMessage());
+            log.error("[updatePermissions] error", e);
         }
 
         // When is a directory, recursive update
@@ -160,7 +159,7 @@ public class LinuxFileUtils {
                     updatePermissions(dir + File.separator + 
subPath.getFileName(), permissions, true);
                 }
             } catch (IOException e) {
-                TaskLogWriter.error("[updatePermissions] error: " + 
e.getMessage());
+                log.error("[updatePermissions] error", e);
             }
         }
     }
@@ -175,7 +174,7 @@ public class LinuxFileUtils {
      */
     public static void updateOwner(String dir, String owner, String group, 
boolean recursive) {
         if (StringUtils.isBlank(dir)) {
-            TaskLogWriter.error("dir must not be null");
+            log.error("dir must not be null");
             return;
         }
         owner = StringUtils.isBlank(owner) ? "root" : owner;
@@ -193,7 +192,7 @@ public class LinuxFileUtils {
             fileAttributeView.setOwner(userPrincipal);
             fileAttributeView.setGroup(groupPrincipal);
         } catch (IOException e) {
-            TaskLogWriter.error("[updateOwner] error: " + e.getMessage());
+            log.error("[updateOwner] error", e);
         }
 
         // When it is a directory, recursively set the file owner
@@ -203,7 +202,7 @@ public class LinuxFileUtils {
                     updateOwner(dir + File.separator + subPath.getFileName(), 
owner, group, true);
                 }
             } catch (IOException e) {
-                TaskLogWriter.error("[updateOwner] error: " + e.getMessage());
+                log.error("[updateOwner] error", e);
             }
         }
     }
@@ -220,20 +219,20 @@ public class LinuxFileUtils {
     public static void createDirectories(
             String dirPath, String owner, String group, String permissions, 
boolean recursive) {
         if (StringUtils.isBlank(dirPath)) {
-            TaskLogWriter.error("dirPath must not be null");
+            log.error("dirPath must not be null");
             return;
         }
         Path path = Paths.get(dirPath);
 
         if (Files.isSymbolicLink(path)) {
-            TaskLogWriter.warn("unable to create symbolic link: " + dirPath);
+            log.warn("unable to create symbolic link: {}", dirPath);
             return;
         }
 
         try {
             Files.createDirectories(path);
         } catch (IOException e) {
-            TaskLogWriter.error("[createDirectories] error: " + 
e.getMessage());
+            log.error("[createDirectories] error", e);
         }
 
         updateOwner(dirPath, owner, group, recursive);
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/linux/LinuxOSUtils.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/linux/LinuxOSUtils.java
index 5a47ccd..2b6800d 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/linux/LinuxOSUtils.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/linux/LinuxOSUtils.java
@@ -21,7 +21,6 @@ package org.apache.bigtop.manager.stack.common.utils.linux;
 import org.apache.bigtop.manager.common.shell.ShellExecutor;
 import org.apache.bigtop.manager.common.shell.ShellResult;
 import org.apache.bigtop.manager.common.utils.FileUtils;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import org.apache.commons.lang3.StringUtils;
 
@@ -100,22 +99,20 @@ public class LinuxOSUtils {
     public static ShellResult checkProcess(String filepath) {
         File file = new File(filepath);
         if (!file.exists() || !file.isFile()) {
-            TaskLogWriter.warn("Pid file " + filepath + " is empty or does not 
exist");
+            log.warn("Pid file {} is empty or does not exist", filepath);
             return new ShellResult(-1, "", "Component is not running");
         }
         int pid;
         try {
             pid = 
Integer.parseInt(FileUtils.readFile2Str(file).replaceAll("\r|\n", ""));
         } catch (Exception e) {
-            TaskLogWriter.warn("Pid file " + filepath
-                    + " does not exist or does not contain a process id 
number, error: " + e.getMessage());
+            log.warn("Pid file {} does not exist or does not contain a process 
id number, error", filepath, e);
             return new ShellResult(-1, "", "Component is not running");
         }
         try {
             return execCmd("kill -0 " + pid);
         } catch (IOException e) {
-            TaskLogWriter.warn("Process with pid " + pid + " is not running. 
Stale pid file at " + filepath
-                    + ", error: " + e.getMessage());
+            log.warn("Process with pid {} is not running. Stale pid file at 
{}, error", pid, filepath, e);
             return new ShellResult(-1, "", "Component is not running");
         }
     }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/template/BaseTemplate.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/template/BaseTemplate.java
index 8ff4e56..309ff8c 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/template/BaseTemplate.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/template/BaseTemplate.java
@@ -19,7 +19,6 @@
 package org.apache.bigtop.manager.stack.common.utils.template;
 
 import org.apache.bigtop.manager.stack.common.exception.StackException;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import freemarker.core.UndefinedOutputFormat;
 import freemarker.template.Configuration;
@@ -58,7 +57,7 @@ public class BaseTemplate {
             Template template = CONFIGURATION.getTemplate(type + ".ftl");
             writeTemplate(path, dataModel, template);
         } catch (IOException e) {
-            TaskLogWriter.error("Failed to writeTemplate: " + e.getMessage());
+            log.error("Failed to writeTemplate", e);
         }
     }
 
@@ -68,7 +67,7 @@ public class BaseTemplate {
             Template template = new Template("tmpTemplate", sourceStr, 
CONFIGURATION);
             writeTemplate(path, dataModel, template);
         } catch (IOException e) {
-            TaskLogWriter.error("Failed to writeTemplate: " + e.getMessage());
+            log.error("Failed to writeTemplate", e);
         }
     }
 
@@ -80,7 +79,7 @@ public class BaseTemplate {
             template.process(dataModel, fileWriter);
             fileWriter.flush();
         } catch (TemplateException | IOException e) {
-            TaskLogWriter.error("Failed to writeTemplate: " + e.getMessage());
+            log.error("Failed to writeTemplate", e);
         } finally {
             try {
                 if (fileWriter != null) {
@@ -98,7 +97,7 @@ public class BaseTemplate {
             template = CONFIGURATION.getTemplate(type + ".ftl");
             return writeTemplateAsString(dataModel, template);
         } catch (IOException e) {
-            TaskLogWriter.error("Failed to writeTemplate: " + e.getMessage());
+            log.error("Failed to writeTemplate", e);
             throw new StackException(e);
         }
     }
@@ -109,7 +108,7 @@ public class BaseTemplate {
             Template template = new Template("tmpTemplate", sourceStr, 
CONFIGURATION);
             return writeTemplateAsString(dataModel, template);
         } catch (IOException e) {
-            TaskLogWriter.error("Failed to writeTemplate: " + e.getMessage());
+            log.error("Failed to writeTemplate", e);
             throw new StackException(e);
         }
     }
@@ -122,7 +121,7 @@ public class BaseTemplate {
             template.process(dataModel, stringWriter);
             stringWriter.flush();
         } catch (TemplateException | IOException e) {
-            TaskLogWriter.error("Failed to writeTemplate: " + e.getMessage());
+            log.error("Failed to writeTemplate", e);
         } finally {
             try {
                 if (stringWriter != null) {
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/template/TemplateUtils.java
 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/template/TemplateUtils.java
index 6437eb6..7fb6779 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/template/TemplateUtils.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-common/src/main/java/org/apache/bigtop/manager/stack/common/utils/template/TemplateUtils.java
@@ -19,7 +19,6 @@
 package org.apache.bigtop.manager.stack.common.utils.template;
 
 import org.apache.bigtop.manager.stack.common.enums.ConfigType;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -47,7 +46,7 @@ public class TemplateUtils {
                 BaseTemplate.writeCustomTemplate(fileName, paramMap, 
paramTemplate);
             }
         } catch (Exception e) {
-            TaskLogWriter.error("writeProperties error: " + e.getMessage());
+            log.error("writeProperties error", e);
         }
     }
 
@@ -63,7 +62,7 @@ public class TemplateUtils {
                 BaseTemplate.writeCustomTemplate(fileName, paramMap, 
paramTemplate);
             }
         } catch (Exception e) {
-            TaskLogWriter.error("writeProperties error: " + e.getMessage());
+            log.error("writeProperties error", e);
         }
     }
 }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/executor/StackExecutor.java
 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/executor/StackExecutor.java
index 85aaaeb..55da1ca 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/executor/StackExecutor.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/executor/StackExecutor.java
@@ -28,14 +28,12 @@ import org.apache.bigtop.manager.spi.stack.Hook;
 import org.apache.bigtop.manager.spi.stack.Params;
 import org.apache.bigtop.manager.spi.stack.Script;
 import org.apache.bigtop.manager.stack.common.exception.StackException;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import lombok.extern.slf4j.Slf4j;
 
 import java.lang.reflect.Method;
 import java.util.List;
 import java.util.Map;
-import java.util.function.Consumer;
 
 @Slf4j
 public class StackExecutor {
@@ -83,13 +81,7 @@ public class StackExecutor {
     }
 
     public static ShellResult execute(CommandPayload commandPayload) {
-        return execute(commandPayload, s -> {});
-    }
-
-    public static ShellResult execute(CommandPayload commandPayload, 
Consumer<String> consumer) {
         try {
-            TaskLogWriter.setWriter(consumer);
-
             String command;
             Script script;
             if 
(commandPayload.getCommand().name().equals(Command.CUSTOM.name())) {
@@ -111,17 +103,15 @@ public class StackExecutor {
 
             runBeforeHook(command);
 
-            TaskLogWriter.info("Executing " + script.getName() + "::" + 
method.getName());
+            log.info("Executing {}::{}", script.getName(), method.getName());
             ShellResult result = (ShellResult) method.invoke(script, params);
 
             runAfterHook(command);
 
             return result;
         } catch (Exception e) {
-            TaskLogWriter.info("Error executing command, payload: " + 
commandPayload + ", error: " + e.getMessage());
+            log.info("Error executing command, payload: {}", commandPayload, 
e);
             return ShellResult.fail();
-        } finally {
-            TaskLogWriter.clearWriter();
         }
     }
 }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/hook/AbstractHook.java
 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/hook/AbstractHook.java
index c7875b4..361f905 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/hook/AbstractHook.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/hook/AbstractHook.java
@@ -19,7 +19,6 @@
 package org.apache.bigtop.manager.stack.core.hook;
 
 import org.apache.bigtop.manager.spi.stack.Hook;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 import org.apache.bigtop.manager.stack.common.utils.LocalSettings;
 import org.apache.bigtop.manager.stack.common.utils.linux.LinuxAccountUtils;
 
@@ -53,7 +52,7 @@ public abstract class AbstractHook implements Hook {
 
         for (Map.Entry<String, Set<String>> user : users.entrySet()) {
             Set<String> groups = user.getValue();
-            TaskLogWriter.info("user: " + user.getKey() + " , groups: " + 
user.getValue());
+            log.info("user: {}, groups: {}", user.getKey(), user.getValue());
             for (String group : groups) {
                 LinuxAccountUtils.groupAdd(group);
             }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-nop/src/main/java/org/apache/bigtop/manager/stack/nop/v1_0_0/kafka/KafkaBrokerScript.java
 
b/bigtop-manager-stack/bigtop-manager-stack-nop/src/main/java/org/apache/bigtop/manager/stack/nop/v1_0_0/kafka/KafkaBrokerScript.java
index b25c8d3..fc173c3 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-nop/src/main/java/org/apache/bigtop/manager/stack/nop/v1_0_0/kafka/KafkaBrokerScript.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-nop/src/main/java/org/apache/bigtop/manager/stack/nop/v1_0_0/kafka/KafkaBrokerScript.java
@@ -21,7 +21,6 @@ package org.apache.bigtop.manager.stack.nop.v1_0_0.kafka;
 import org.apache.bigtop.manager.common.shell.ShellResult;
 import org.apache.bigtop.manager.spi.stack.Params;
 import org.apache.bigtop.manager.spi.stack.Script;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import com.google.auto.service.AutoService;
 import lombok.extern.slf4j.Slf4j;
@@ -32,36 +31,36 @@ public class KafkaBrokerScript implements Script {
 
     @Override
     public ShellResult install(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 
     @Override
     public ShellResult configure(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 
     @Override
     public ShellResult start(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 
     @Override
     public ShellResult stop(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 
     @Override
     public ShellResult status(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 
     public ShellResult test(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-nop/src/main/java/org/apache/bigtop/manager/stack/nop/v1_0_0/zookeeper/ZookeeperClientScript.java
 
b/bigtop-manager-stack/bigtop-manager-stack-nop/src/main/java/org/apache/bigtop/manager/stack/nop/v1_0_0/zookeeper/ZookeeperClientScript.java
index 7818c21..08e3bf0 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-nop/src/main/java/org/apache/bigtop/manager/stack/nop/v1_0_0/zookeeper/ZookeeperClientScript.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-nop/src/main/java/org/apache/bigtop/manager/stack/nop/v1_0_0/zookeeper/ZookeeperClientScript.java
@@ -22,7 +22,6 @@ import org.apache.bigtop.manager.common.shell.ShellResult;
 import org.apache.bigtop.manager.spi.stack.ClientScript;
 import org.apache.bigtop.manager.spi.stack.Params;
 import org.apache.bigtop.manager.spi.stack.Script;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import com.google.auto.service.AutoService;
 import lombok.extern.slf4j.Slf4j;
@@ -33,13 +32,13 @@ public class ZookeeperClientScript implements ClientScript {
 
     @Override
     public ShellResult install(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 
     @Override
     public ShellResult configure(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-nop/src/main/java/org/apache/bigtop/manager/stack/nop/v1_0_0/zookeeper/ZookeeperServerScript.java
 
b/bigtop-manager-stack/bigtop-manager-stack-nop/src/main/java/org/apache/bigtop/manager/stack/nop/v1_0_0/zookeeper/ZookeeperServerScript.java
index 996c411..48d75da 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-nop/src/main/java/org/apache/bigtop/manager/stack/nop/v1_0_0/zookeeper/ZookeeperServerScript.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-nop/src/main/java/org/apache/bigtop/manager/stack/nop/v1_0_0/zookeeper/ZookeeperServerScript.java
@@ -21,7 +21,6 @@ package org.apache.bigtop.manager.stack.nop.v1_0_0.zookeeper;
 import org.apache.bigtop.manager.common.shell.ShellResult;
 import org.apache.bigtop.manager.spi.stack.Params;
 import org.apache.bigtop.manager.spi.stack.Script;
-import org.apache.bigtop.manager.stack.common.log.TaskLogWriter;
 
 import com.google.auto.service.AutoService;
 import lombok.extern.slf4j.Slf4j;
@@ -32,31 +31,31 @@ public class ZookeeperServerScript implements Script {
 
     @Override
     public ShellResult install(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 
     @Override
     public ShellResult configure(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 
     @Override
     public ShellResult start(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 
     @Override
     public ShellResult stop(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 
     @Override
     public ShellResult status(Params params) {
-        TaskLogWriter.info("Success on dev mode");
+        log.info("Default to success in dev mode");
         return ShellResult.success();
     }
 }

Reply via email to