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
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
背景
在 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