课程名称:web前端架构师
课程章节:第14周 第四章 egg基础知识
主讲老师:张轩
课程内容: eggjs 调试技巧
在我们开发过程中,我们可能需要知道代码执行过程中的信息,我们可以使用在代码中使用 console.log 进行打印
框架内置了功能强大的日志功能,可以非常方便的打印各种级别的日志到对应的日志文件中,每一个 logger 对象都提供了 4 个级别的方法(级别从低到高):
import { Controller } from 'egg'; export default class HomeController extends Controller { public async index() { const { ctx } = this; ctx.body = await ctx.service.test.sayHi('egg'); ctx.logger.error('err info'); } }
相关文档链接
在项目根目录下的 .vscode 文件夹下(没有就创建该文件)新建文件launch.json
配置如下
// .vscode/launch.json { "configurations": [ { "name": "Launch Egg", "type": "node", "request": "launch", "cwd": "${workspaceRoot}", "runtimeExecutable": "npm", "runtimeArgs": [ "run", "debug" ], "console": "integratedTerminal", "restart": true, "autoAttachChildProcesses": true } ] }
然后在 vscode 中将我们所需要的代码打个断点就可以了(点击调试代码的最左边,即行号左边,点击后会出现一个红点)
也可以设置 vscode debug:Auto Attach: Smart ,这个使用起来也非常方便,随便写个 js 代码就可以使用 node进行调试,但是当我们调试整个项目时,还是使用 vscode 配置文件会更好
所有日志文件默认都放在 ${appInfo.root}/logs/${appInfo.name}
路径下,例如 /home/admin/logs/example-app
。
在本地开发环境 (env: local) 和单元测试环境 (env: unittest),为了避免冲突以及集中管理,日志会打印在项目目录下的 logs 目录,例如 /path/to/example-app/logs/example-app
。
框架内置了几种日志,分别在不同的场景下使用:
${appInfo.name}-web.log
,例如 example-app-web.log
,应用相关日志,供应用开发者使用的日志。我们在绝大数情况下都在使用它。egg-web.log
框架内核、插件日志。common-error.log
实际一般不会直接使用它,任何 logger 的 .error() 调用输出的日志都会重定向到这里,重点通过查看此日志定位异常。egg-agent.log agent
进程日志,框架和使用到 agent 进程执行任务的插件会打印一些日志到这里。其他信息可以参考官方文档。https://www.eggjs.org/zh-CN/core/logger