[错误]: @nocobase/plugin-workflow-request-interceptor 中对虚拟/自定义资源的误报警告过多
* 描述错误
当启用了 “%nocobase/plugin-workflow-request-interceptor”(工作流程:行动前事件)插件时,任何API请求虚拟或自定义资源(例如/api/charts:queryData'、/api/onlineContent:heartbeat'、/api/loggerProgres:tail')都会触发过度的[warn]'日志:
贾森
{"级别":"警告","消息":"[工作流程预操作]:集合"图表"没有找到",模块:"图表",子模块:"queryData"}
由于仪表板图表的民意测验和客户心跳定期汇报,系统日志文件( " system YYYY-MM-DD.log " )被上百克/上千克的这些虚假阳性警告所淹没,使得生产日志难以监测并不必要的膨胀.
根原因 :
在“nocobase/plugin-workflow-request-interceptor/dist/server/requestInterception Trigger.js”中:
[JavaScript]
Const Collection = 数据来源. CollectionManager.get Collection(资源Name) ;
如果 (! 收集) {
上下文.logger.warn(`[Workflow pre-action]:"${资源Name}"没有找到');
返回下一个( C) ;
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?拦截器假定进入该系统的每一行动请求都必须与物理数据库“收集”对应。 然而,NocoBase本土支持通过"app.resource (.)"(如"图表",或自定义插件API端点)注册的虚拟/海关资源. 当一项行动被发送到一个没有数据库表格收集的自定义资源时,记录 " 警告 " 是虚假阳性,造成严重的木材污染。
□ 环境
- NocoBase版本:2.1.x/ 2.2.x(例如2.1.39、2.2.0、2.2.5)
- 数据库类型和版本:SQLite / MySQL / PostgreSQL
- OS: Linux / Docker / 视窗
- 部署方法:Docker / Git源代码
- 节点JS版本:18x/20x
如何重现#
- 启用“nocobase/plugin-workflow-request-interceptor”插件。
- 通过
app.resource(.) ' 登录任何包含图表的仪表板(触发/api/charts:queryData'),或通过`app.resource(.)'登记任何自定义资源,并向其发送请求。 - 检查服务器日志(`存储/日志/主/系统 YYY-MM-DD.log')。
- 您将看到高频警告日志:`[工作流程预操作]:未找到的"图表"。
□ 预期行为
当data source.collectionManager.get Collection(资源Name)'返回虚拟资源的无效/未定义时,截取器应静默地通过(return next()')或以debug'级别登录,而不是在生产时记录warn'警报。
□ 建议修补
将日志级别从 “ warn” 改为“ debug” (或悄悄返回下一个( ) ):
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? Const Collection = 数据来源. CollectionManager.get Collection(资源Name) ; 如果 (! 收集) {
- 上下文.logger.warn(`[Workflow pre-action]:"${资源Name}"没有找到');
- 上下文. logger. debug( `[ Workflow pre- action] : collection "${resourceName}" 没有找到' ); 返回下一个( C) ; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
内容来源: nocobase/nocobase