日志输出优化
- Dominant language
- TypeScript
- Stars
- 18.6k
- Forks
- 2.1k
- PR merge metrics
- No merged PRs in 30d
Description
目前通过 consola 的方式控制日志等级,并通过设置 CONSOLA_LEVEL 的方式控制 debug 信息的输出。但由于目前的构建任务复杂,并且插件也推荐通过 debug 输出日志,一旦开启输入后,日志内容相对较多,造成大量不必要干扰。期望优化成更加细粒度的日志输出逻辑。
### 方案设计
#### 错误日志合并
##### 设计的前置思考
一旦编译发生错误,大概率是用户代码出现问题,这个时候不管是 data-loader 构建、server 构建还是 client 端代码构建等都会出错。因此大部分场景下开发者仅需要关心修复 client 端的错误,其余构建任务特别是 预构建 / server / data-loader / 配置获取的构建任务都不应该关心,由框架保证其执行的可靠性。
> server 端的构建错误基本上和 client 端保持一致,绝大多数为同构代码的错误,类似 `window is not defined`,而这种错误将在执行 server 逻辑的时候抛出
##### 合并设计
对于除 client 端外错误外,其他编译错误不再直接抛出,而通过中心化逻辑对错误进行处理,并在构建结束后输出一条 summary:
```js
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 构建任务
Contributor guide
Assessment
This issue has not been assessed yet.