egg-syllabus-framework介绍

220 阅读1分钟

1. 准备及使用框架

  1. 下载egg模板,并安装依赖

     $ npm i egg-init -g
     $ egg-init <文件夹名字> --type=simple
     $ cd <文件夹名字>
     $ npm i
    
  2. 安装egg-syllabus-framework

     $ npm install egg-syllabus-framework --save
    
  3. 将egg配置到package.json中

         {
     "egg":{
         "framework":"egg-syllabus-framework"
     }
     }
    

    其中egg与name同级

  4. 启动框架

     npm run dev
    
  5. 打开命令行上显示的监听的url,如http://127.0.0.1:7001

2. 框架结构

几乎和egg完全相同 多了一个错误码配置文件 coonfig/errCode.js

3. 日志

1.日志目录

日志一般保存于logs目录下

2. 日志格式

下面介绍的是eggframe-web.log的日志的格式 该日志主要用于打印客户访问浏览器信息,如用户校园网账号,客户端ip地址,等等

LOG_TIME LOG_TYPE PID [ACCOUNT/IP/REQ_ID/METHOD/USE_TIME/URL] CONTENT 
  • REACH_TIME:日志打印时间

  • LOG_TYPE: 日志类型,日志分为 NONE,DEBUG,INFO,WARN 和 ERROR 5 个级别,默认只会输出 INFO 及以上(WARN 和 ERROR)的日志到文件中

  • PID: 进程的pid,框架为多进程启动,可以查看输出日志的进程,一般情况下比较少用

  • ACCOUNT: 用户校园账号,只有需要校验登录态的请求,该项才会有值

  • IP: 客户端ip地址

  • REQ_ID: 请求的唯一id

  • METHOD: 请求方法

  • USE_TIME: 直到日志打印的时刻,请求所花费的时间

  • URL: 请求的url

  • CONTENT: 日志内容

如果其中一项为空,为显示为 -

如:

2019-11-26 08:41:06,161 INFO 77756 [-/127.0.0.1/oDwGYV_D/1ms GET /] Call Controller: HomeController -> index

其中-是校园网账号,这里没有则表示为- Call ······->index是日志内容

3. 日志内容

  1. 出入记录 用 request 和 response中间件实现, 相关代码如下: request.js:

     ctx.logger.info(`Request: ${ctx.method} ${ctx.originalUrl} ${ctx.request.rawBody}`)
     ctx._beginTime = Date.now()
    

    response.js

     ctx.logger.info(`Response ${Date.now() - ctx._beginTime}ms: Page: ${ctx.renderPage.view} / data: ${JSON.stringify(ctx.renderPage.data)}`)
    
  2. 请求ID 每个请求都会被分配一个请求ID,该功能由traceId中间件实现

  3. 方法记录 当Controller、Service的方法被调用时,能够自动打印出如下格式的日志:

     Call Controller: HomeController -> index
     Call Controller: OauthController -> stuLogin
     Call Service: OauthService -> _updateStuToken
    
  4. 页面信息日志 通过render.js重新封装ctx.render,优化response中间件,当响应内容为页面时,能更好的输出日志内容,而不是输出整个html页面,输出格式如下:

     Response <请求耗时>: render page <页面名称> data: <页面数据>
    

    如:Response 7ms: hi, egg