Replies: 1 comment
-
插件进程内的默认日志及异常处理也存在问题 core/packages/extension/src/hosted/ext.process-base.ts Lines 249 to 260 in 40ee3db |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
背景
在 OpenSumi 框架内,目前如果需要查看插件进程中
console.*
输出信息,必须断点到插件进程中查看,这在远程/线上服务中可行性较低,同时,插件本地开发/调试过程也相对依赖日志输出能力,目前只能通过两种方式解决这一问题:OutputChannel
输出、使用vscode.window.showInformation
API 输出等方式。目前问题
问题一
当前针对插件进程的
console.*
有一个简单的代理逻辑 #2620 ,见:https://github.com/opensumi/core/blob/40ee3db7865b4ce0e2b6b96fa9f91f3685d96d02/packages/extension/src/hosted/ext.process-base.ts#L126-#L137
这里简单处理了插件进程内的
console.*
方法防止被外部错误处理,同时,在 Node 进程中会监听插件进程输出进行二次输出core/packages/extension/src/node/extension.service.ts
Lines 366 to 380 in 642e080
以下面代码为例:
core/packages/extension/src/hosted/api/vscode/ext.host.scm.ts
Line 720 in 5143643
在 Node 进程内输出格式如下(输出格式受到 extension.service.ts#L366-L380 控制,可读性较差):
更合理的方式应该冻结
console.*
实现,并在插件进程进行更完整的默认实现。如:支持在前端进程内输出插件进程日志信息。
问题二
目前大部分插件进程逻辑内,依赖的
getDebugLogger
去进程日志信息输出(实际上与console.*
是一样的),最终导致部分日志信息仅能在插件进程中看到输出信息,无法区分是插件输出还是插件进程输出,见:core/packages/extension/src/hosted/api/vscode/ext.host.scm.ts
Line 657 in 5143643
建议通过统一的 Logger 进行日志信息输出,与插件代码内的
console.*
区分问题三
框架内同时存在
extension-log.ts
和extension-log2.ts
两个 Logger 文件,分别用于 (WokerHost 和 ExtHost) 两个环境下使用,建议统一使用同一个构造类解决方案
针对插件进程实现一个独立的日志输出服务,将插件进程中的
console.*
方法进行充分代理(防止方法不支持导致的报错异常),从而实现对插件进程开发调试的可能(如支持在前端-浏览器中输出插件进程日志)。该日志输出能力建议只在开发环境中启用,由集成方自行控制能力开关。
Beta Was this translation helpful? Give feedback.
All reactions