1. 准备及使用框架
-
下载egg模板,并安装依赖
$ npm i egg-init -g $ egg-init <文件夹名字> --type=simple $ cd <文件夹名字> $ npm i
-
安装egg-syllabus-framework
$ npm install egg-syllabus-framework --save
-
将egg配置到package.json中
{ "egg":{ "framework":"egg-syllabus-framework" } }
其中egg与name同级
-
启动框架
npm run dev
-
打开命令行上显示的监听的url,如
http://127.0.0.1:7001
2. 框架结构
几乎和egg完全相同 多了一个错误码配置文件 coonfig/errCode.js
3. 日志
1.日志目录

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. 日志内容
-
出入记录 用 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)}`)
-
请求ID 每个请求都会被分配一个请求ID,该功能由traceId中间件实现
-
方法记录 当Controller、Service的方法被调用时,能够自动打印出如下格式的日志:
Call Controller: HomeController -> index Call Controller: OauthController -> stuLogin Call Service: OauthService -> _updateStuToken
-
页面信息日志 通过render.js重新封装ctx.render,优化response中间件,当响应内容为页面时,能更好的输出日志内容,而不是输出整个html页面,输出格式如下:
Response <请求耗时>: render page <页面名称> data: <页面数据>
如:
Response 7ms: hi, egg