diff --git a/springboot/fastbee-admin/src/main/resources/logback.xml b/springboot/fastbee-admin/src/main/resources/logback.xml
index 44322024..ba807867 100644
--- a/springboot/fastbee-admin/src/main/resources/logback.xml
+++ b/springboot/fastbee-admin/src/main/resources/logback.xml
@@ -1,7 +1,7 @@
-
+
@@ -95,6 +95,24 @@
+
+
+ ${log.path}/rule/script.log
+
+
+ ${log.path}/rule/script.%d{yyyy-MM-dd}.log
+
+ 3
+
+
+ %d{HH:mm:ss.SSS} [%method,%line] - %msg%n
+
+
+ INFO
+
+
+
+
@@ -115,4 +133,10 @@
+
+
+
+
+
+
diff --git a/springboot/fastbee-open-api/src/main/java/com/fastbee/data/controller/ScriptController.java b/springboot/fastbee-open-api/src/main/java/com/fastbee/data/controller/ScriptController.java
index b49a044a..29eb6002 100644
--- a/springboot/fastbee-open-api/src/main/java/com/fastbee/data/controller/ScriptController.java
+++ b/springboot/fastbee-open-api/src/main/java/com/fastbee/data/controller/ScriptController.java
@@ -85,6 +85,16 @@ public class ScriptController extends BaseController
return toAjax(scriptService.updateRuleScript(ruleScript));
}
+ /**
+ * 获取规则引擎脚本日志
+ */
+ @PreAuthorize("@ss.hasPermi('iot:script:query')")
+ @GetMapping(value = "/log/{scriptId}")
+ public AjaxResult getScriptLog(@PathVariable("scriptId") String scriptId) {
+ return success(scriptService.selectRuleScriptLog("script", scriptId));
+ }
+
+
/**
* 删除规则引擎脚本
*/
diff --git a/springboot/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/MsgContext.java b/springboot/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/MsgContext.java
index 5b4f3168..1730318a 100644
--- a/springboot/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/MsgContext.java
+++ b/springboot/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/MsgContext.java
@@ -4,6 +4,8 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
@Data
@Builder
@@ -11,11 +13,14 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
public class MsgContext {
+ private static Logger logger = LoggerFactory.getLogger("script");
+
/** 消息主题 */
private String topic;
/** 消息内容 */
private String payload;
+
/**
* 设备编号
*/
diff --git a/springboot/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IScriptService.java b/springboot/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IScriptService.java
index 24cf4933..aa64c0da 100644
--- a/springboot/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IScriptService.java
+++ b/springboot/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IScriptService.java
@@ -22,6 +22,14 @@ public interface IScriptService
*/
public Script selectRuleScriptById(String scriptId);
+ /**
+ * 查询规则引擎脚本日志
+ *
+ * @param id 规则引擎脚本主键
+ * @return 规则引擎脚本
+ */
+ public String selectRuleScriptLog(String type, String id);
+
/**
* 查询规则引擎脚本列表
*
diff --git a/springboot/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ScriptServiceImpl.java b/springboot/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ScriptServiceImpl.java
index 88ac3727..f629583c 100644
--- a/springboot/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ScriptServiceImpl.java
+++ b/springboot/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ScriptServiceImpl.java
@@ -12,10 +12,18 @@ import com.fastbee.iot.model.ScriptCondition;
import com.fastbee.iot.service.IScriptService;
import com.yomahub.liteflow.core.FlowExecutor;
import com.yomahub.liteflow.script.ScriptExecutorFactory;
+import org.apache.commons.io.input.ReversedLinesFileReader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.slf4j.LoggerFactory;
+import lombok.extern.slf4j.Slf4j;
+import ch.qos.logback.classic.LoggerContext;
import javax.annotation.Resource;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -50,6 +58,38 @@ public class ScriptServiceImpl implements IScriptService
return ruleScriptMapper.selectRuleScriptById(scriptId);
}
+ /**
+ * 查询规则引擎脚本日志
+ *
+ * @param id 规则引擎脚本主键
+ * @return 规则引擎脚本
+ */
+
+ @Override
+ public String selectRuleScriptLog(String type, String id) {
+ // 获取日志存储路径
+ LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
+ String path = loggerContext.getProperty("log.path");
+
+ // 倒叙读取500条日志
+ try {
+ List lines = new ArrayList<>();
+ ReversedLinesFileReader reader = new ReversedLinesFileReader(new File(path + "/rule/" + type + ".log"));
+ String line = "";
+ while ((line = reader.readLine()) != null && lines.size() < 500) {
+ String requestId = type + "/" + id;
+ if (line.contains(requestId)) {
+ lines.add(line);
+ }
+ }
+ Collections.reverse(lines);
+ return String.join("\n", lines);
+ } catch (IOException e) {
+ return "暂无日志,详情如下:\n" + e.toString();
+ }
+ }
+
+
/**
* 查询规则引擎脚本列表
*
diff --git a/vue/src/api/iot/script.js b/vue/src/api/iot/script.js
index a39bf453..2a6d792b 100644
--- a/vue/src/api/iot/script.js
+++ b/vue/src/api/iot/script.js
@@ -17,6 +17,15 @@ export function getScript(scriptId) {
});
}
+// 查询规则引擎脚本日志
+export function getScriptLog(scriptId) {
+ return request({
+ url: '/iot/script/log/' + scriptId,
+ method: 'get',
+ });
+}
+
+
// 新增规则引擎脚本
export function addScript(data) {
return request({
diff --git a/vue/src/views/iot/scene/script.vue b/vue/src/views/iot/scene/script.vue
index 8b07ea3d..58ad8eec 100644
--- a/vue/src/views/iot/scene/script.vue
+++ b/vue/src/views/iot/scene/script.vue
@@ -48,6 +48,7 @@
+ 日志
查看
+
+
+
+
+
+