egg-­syllabus-­framework

272 阅读3分钟

egg­syllabus­framework初步使用

1.安装框架

先安装egg模板,并且安装依赖

$ npm i egg-init -g 
$ egg-init <文件夹名字> --type=simple 
$ cd <文件夹名字> 
$ npm i 

安装egg模板后,安装egg­syllabus­framework框架

$ npm install egg-syllabus-framework --save

接下来要把egg­syllabus­framework框架配置到package.json中

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

然后可以启动框架,在命令行中输入

npm run dev

打开http://127.0.0.1:7001即可看到相应框架

2.框架结构

跟egg目录是差不多的

3.日志

日志的格式

LOG_TIME LOG_TYPE PID [ACCOUNT/IP/REQ_ID/METHOD/USE_TIME/URL] CONTENT 

我们干了什么,输出什么都可以从这里看得到;

  • REACH_TIME日志打印时间
  • LOG_TYPE日志类型,日志分为NONEDEBUGINFOWARNERROR5个级别,只会默认输出INFO及以上(WARNERROR)的日志到文件中
  • PID 进度的pid,框架为多进度启动,可以查看输出日志的进度,一般情况下比较少用
  • ACCOUNT 用户校园账号,只有需要校准登录态的请求,先前才会有值
  • IP 客户端ip地址
  • REQ_ID 请求的唯一id
  • METHOD 请求方法
  • USE_TIME 直到日志打印的时刻,请求所花费的时间
  • URL 请求的网址
  • CONTENT 日志内容

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

出入记录

记录以下信息:

  • 请求的参数
  • 响应内容和响应时间

该功能由request和reponse中间件实现

请求ID

唯一的请求ID,以区分日志文件中不同的请求所输出的日志

该功能由traceld实现

方法记录

ControllerService的方法被调用时,会进行输出:

Call Controller: OauthController -> stuLogin
Call Service: OauthService -> _updateStuToken

我们可以看到这些是页面的跳转,从中可以知道从哪个页面跳转到另外哪个页面处,但是中间怎么跳转我们并不清楚

经过的中间件互连不会打印日志,需要手动写日志

页面日志

通过ctx.render返回的页面会有以下的响应格式

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

4.错误码

错误码可以定义为一组数字(或字母与数字的结合),它会与错误讯息建立关联,用于识别在系统中出现的各种异常情况

错误码格式:

  • 1-2位-代表发生错误的后台,在线上服务中,我们的后台服务可能不止一个
  • 3-8位-具体业务错误码
    • 3-3位-1代表错误发生在Controller,2代表错误发生在service,3代表错误发生在中间件,4代表错误发生在helper
    • 4-6位-代表具体的控制器/服务/中间件
    • 7-8位-具体的业务错误码

封装方法

我们在我们可以进行封装一个方法ctx.helper.createError(),用来生成带有错误码信息的错误对象

/**
 * 创建一个带有错误码的Error对象
 * @param msg 错误信息
 * @param code 3-8位错误码
 * @param arg_props 其他混入到Error对象的属性
 * @returns {Error} 返回带错误码的Error对象
 */
createError(msg, code, arg_props) {}

通过throw ctx.helper.createError('error message', your_error_code )进行使用

配置

全局配置
// config/config.default.js
module.exports = {
    errCode: {
        APP_ERROR_CODE: '01',   // 应用错误码,错误码1-2位,其他为3-6位
        NOT_REGISTER_ERROR: '0000', // 未登记默认错误码
	}
}
错误码文件配置
// config/errCode.js
const errCode = {
    testController: {
        code: '1001',  // 3-6位
        error1: '01',  // 7-8位
        error2: '02',  // 7-8位
    },
}
module.exports = errCode
给客户端返回错误信息
// config/config.default.js
module.exports = {
     errCatch: {
        responseErrorMsg: true
    }
}

5.前端代理请求

/ config/config.default.js
config.socketRequest = {
	url: 'http://localhost:7003/socket-proxy'
}

请求函数

/**
 * @param options
 * @param options.url
 * @param options.data
 * @param options.header
 * @param options.method
 * @param options.dataType
 * @param options.needProxy
 * @returns {Promise<*>}
 */
async request(options) {}