|
@@ -16,6 +16,9 @@
|
|
|
*/
|
|
|
package org.apache.dolphinscheduler.api.service;
|
|
|
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
+import javax.annotation.PreDestroy;
|
|
|
+import org.apache.commons.lang.ArrayUtils;
|
|
|
import org.apache.dolphinscheduler.api.enums.Status;
|
|
|
import org.apache.dolphinscheduler.api.utils.Result;
|
|
|
import org.apache.dolphinscheduler.common.Constants;
|
|
@@ -29,8 +32,6 @@ import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import javax.annotation.PreDestroy;
|
|
|
-
|
|
|
|
|
|
* log service
|
|
|
*/
|
|
@@ -39,17 +40,19 @@ public class LoggerService {
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(LoggerService.class);
|
|
|
|
|
|
+ private static final String LOG_HEAD_FORMAT = "[LOG-PATH]: %s, [HOST]: %s%s";
|
|
|
+
|
|
|
@Autowired
|
|
|
private ProcessService processService;
|
|
|
|
|
|
private final LogClientService logClient;
|
|
|
|
|
|
- public LoggerService(){
|
|
|
+ public LoggerService() {
|
|
|
logClient = new LogClientService();
|
|
|
}
|
|
|
|
|
|
@PreDestroy
|
|
|
- public void close(){
|
|
|
+ public void close() {
|
|
|
logClient.close();
|
|
|
}
|
|
|
|
|
@@ -65,24 +68,34 @@ public class LoggerService {
|
|
|
|
|
|
TaskInstance taskInstance = processService.findTaskInstanceById(taskInstId);
|
|
|
|
|
|
- if (taskInstance == null || StringUtils.isBlank(taskInstance.getHost())){
|
|
|
- return new Result(Status.TASK_INSTANCE_NOT_FOUND.getCode(), Status.TASK_INSTANCE_NOT_FOUND.getMsg());
|
|
|
+ if (taskInstance == null || StringUtils.isBlank(taskInstance.getHost())) {
|
|
|
+ return Result.error(Status.TASK_INSTANCE_NOT_FOUND);
|
|
|
}
|
|
|
|
|
|
String host = getHost(taskInstance.getHost());
|
|
|
|
|
|
Result result = new Result(Status.SUCCESS.getCode(), Status.SUCCESS.getMsg());
|
|
|
|
|
|
- logger.info("log host : {} , logPath : {} , logServer port : {}",host,taskInstance.getLogPath(),Constants.RPC_PORT);
|
|
|
+ logger.info("log host : {} , logPath : {} , logServer port : {}", host, taskInstance.getLogPath(),
|
|
|
+ Constants.RPC_PORT);
|
|
|
+
|
|
|
+ StringBuilder log = new StringBuilder();
|
|
|
+ if (skipLineNum == 0) {
|
|
|
+ String head = String.format(LOG_HEAD_FORMAT,
|
|
|
+ taskInstance.getLogPath(),
|
|
|
+ host,
|
|
|
+ Constants.SYSTEM_LINE_SEPARATOR);
|
|
|
+ log.append(head);
|
|
|
+ }
|
|
|
+
|
|
|
+ log.append(logClient
|
|
|
+ .rollViewLog(host, Constants.RPC_PORT, taskInstance.getLogPath(), skipLineNum, limit));
|
|
|
|
|
|
- String log = logClient.rollViewLog(host, Constants.RPC_PORT, taskInstance.getLogPath(),skipLineNum,limit);
|
|
|
result.setData(log);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
|
|
|
* get log size
|
|
|
*
|
|
@@ -91,22 +104,27 @@ public class LoggerService {
|
|
|
*/
|
|
|
public byte[] getLogBytes(int taskInstId) {
|
|
|
TaskInstance taskInstance = processService.findTaskInstanceById(taskInstId);
|
|
|
- if (taskInstance == null || StringUtils.isBlank(taskInstance.getHost())){
|
|
|
+ if (taskInstance == null || StringUtils.isBlank(taskInstance.getHost())) {
|
|
|
throw new RuntimeException("task instance is null or host is null");
|
|
|
}
|
|
|
String host = getHost(taskInstance.getHost());
|
|
|
-
|
|
|
- return logClient.getLogBytes(host, Constants.RPC_PORT, taskInstance.getLogPath());
|
|
|
+ byte[] head = String.format(LOG_HEAD_FORMAT,
|
|
|
+ taskInstance.getLogPath(),
|
|
|
+ host,
|
|
|
+ Constants.SYSTEM_LINE_SEPARATOR).getBytes(StandardCharsets.UTF_8);
|
|
|
+ return ArrayUtils.addAll(head,
|
|
|
+ logClient.getLogBytes(host, Constants.RPC_PORT, taskInstance.getLogPath()));
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
* get host
|
|
|
+ *
|
|
|
* @param address address
|
|
|
* @return old version return true ,otherwise return false
|
|
|
*/
|
|
|
- private String getHost(String address){
|
|
|
- if (Host.isOldVersion(address)){
|
|
|
+ private String getHost(String address) {
|
|
|
+ if (Host.isOldVersion(address)) {
|
|
|
return address;
|
|
|
}
|
|
|
return Host.of(address).getIp();
|