Egg.js的洋葱模型及日志功能

1,484 阅读1分钟

1. 洋葱模型

其实就是和koa的中间件执行顺序有关,用await next()进入下一个中间件,然后到达最后一个中间件后,再返回执行前面的中间件,和异步函数有关

app.use(async (ctx, next)=>{
console.log(1)
await next();
console.log(1)
});
// #2
app.use(async (ctx, next) => {
    console.log(2)
    await next();
    console.log(2)
})

app.use(async (ctx, next) => {
    console.log(3)
})

看完这个代码应该就懂了,输出12321


2. 日志

日志对于 Web 开发的重要性毋庸置疑,它对于监控应用的运行状态、问题排查等都有非常重要的意义。

框架内置了强大的企业级日志支持,由 egg-logger 模块提供。

主要特性:

  • 日志分级
  • 统一错误日志,所有 logger 中使用 .error() 打印的 ERROR 级别日志都会打印到+ 统一的错误日志文件中,便于追踪
  • 启动日志和运行日志分离
  • 自定义日志
  • 多进程日志
  • 自动切割日志
  • 高性能

所有日志文件默认都放在${appInfo.root}/logs/${appInfo.name}路径下,例如 /home/admin/logs/example-app