规则脚本增加日志

This commit is contained in:
kerwincui
2025-04-15 15:34:04 +08:00
parent 12dc1e869e
commit 56577f4262
7 changed files with 154 additions and 3 deletions

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路径 -->
<property name="log.path" value="/logs" />
<property name="log.path" value="D:/logs" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
@@ -95,6 +95,24 @@
</encoder>
</appender>
<!-- 规则引擎日志输出 -->
<appender name="script" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/rule/script.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>${log.path}/rule/script.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 3天 -->
<maxHistory>3</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%method,%line] - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- 系统模块日志级别控制 -->
<logger name="com.fastbee" level="debug" />
<!-- Spring日志级别控制 -->
@@ -115,4 +133,10 @@
<logger name="sys-user" level="info">
<appender-ref ref="sys-user"/>
</logger>
<!--规则引擎日志-->
<logger name="script" level="info">
<appender-ref ref="script"/>
</logger>
</configuration>

View File

@@ -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));
}
/**
* 删除规则引擎脚本
*/

View File

@@ -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;
/**
* 设备编号
*/

View File

@@ -22,6 +22,14 @@ public interface IScriptService
*/
public Script selectRuleScriptById(String scriptId);
/**
* 查询规则引擎脚本日志
*
* @param id 规则引擎脚本主键
* @return 规则引擎脚本
*/
public String selectRuleScriptLog(String type, String id);
/**
* 查询规则引擎脚本列表
*

View File

@@ -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<String> 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();
}
}
/**
* 查询规则引擎脚本列表
*