Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

日志输出优化 #5690

Open
ClarkXia opened this issue Dec 9, 2022 · 0 comments
Open

日志输出优化 #5690

ClarkXia opened this issue Dec 9, 2022 · 0 comments
Assignees

Comments

@ClarkXia
Copy link
Collaborator

ClarkXia commented Dec 9, 2022

目前通过 consola 的方式控制日志等级,并通过设置 CONSOLA_LEVEL 的方式控制 debug 信息的输出。但由于目前的构建任务复杂,并且插件也推荐通过 debug 输出日志,一旦开启输入后,日志内容相对较多,造成大量不必要干扰。期望优化成更加细粒度的日志输出逻辑。

方案设计

错误日志合并

设计的前置思考

一旦编译发生错误,大概率是用户代码出现问题,这个时候不管是 data-loader 构建、server 构建还是 client 端代码构建等都会出错。因此大部分场景下开发者仅需要关心修复 client 端的错误,其余构建任务特别是 预构建 / server / data-loader / 配置获取的构建任务都不应该关心,由框架保证其执行的可靠性。

server 端的构建错误基本上和 client 端保持一致,绝大多数为同构代码的错误,类似 window is not defined,而这种错误将在执行 server 逻辑的时候抛出

合并设计

对于除 client 端外错误外,其他编译错误不再直接抛出,而通过中心化逻辑对错误进行处理,并在构建结束后输出一条 summary:

import errorMessage from './errorMessage';

try {
  await serverCompiler();
} catch(err) {
  errorMessage.add('namespace', err);
}

// after webpack compile
errorMessage.summary(); // 仅输出一条总结性错误,并给出输出详细错误的提示

错误输出控制

在 log level 的基础上增加,--debug=namespace 的能力,为框架内置的几个主要编译任务设置 namespace:

  • pre,包含预分析,预编译
  • server,服务端编译
  • config,appconfig / routeconfig 等轻量配置任务
  • dataloader,dataLoader 构建任务
@ClarkXia ClarkXia assigned ClarkXia and luhc228 and unassigned ClarkXia Dec 9, 2022
@ClarkXia ClarkXia mentioned this issue Dec 16, 2022
10 tasks
@luhc228 luhc228 mentioned this issue Dec 20, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants