由於此框架是基於node.js的,安裝node是必須的進行的第一步,這裏再也不詳細介紹node
# 全局安裝koa腳手架
cnpm install koa-generator -g
# 建立新項目
koa2 my_server
# 打開新建的項目
cd my_server
# 安裝依賴
yarn
複製代碼
安裝完成後,執行npm dev,瀏覽器輸入localhost:3000,展現以下頁面,即koa2環境搭建成功web
入口文件在 bin/www
裏面npm
安裝log4jsmarkdown
npm install log4js
# 或者
yarn add log4js
複製代碼
建立一個utils文件夾
,建立log4j.js
app
註釋都在代碼上面,有啥問題歡迎騷擾我框架
/**
* 日誌存儲
* @auther 何小玍。
* @time 2021/07/28 22:11
*/
const log4j = require('log4js')
const levels = {
'trace' : log4j.levels.TRACE,
'debug' : log4j.levels.DEBUG,
'info' : log4j.levels.INFO,
'warn' : log4j.levels.WARN,
'error' : log4j.levels.ERROR,
'fatal' : log4j.levels.FATAL
}
// log4j配置
log4j.configure({
appenders: {
console: { type: 'console' },
info: {
type: 'file',
filename: 'logs/all-logs.log'
},
error: {
type: 'dateFile',
filename: 'logs/log',
pattern: 'yyyy-MM-dd.log',
alwaysIncludePattern: true // 設置文件名稱爲 filename + pattern
}
},
categories: {
default: {
appenders: [ 'console' ],
level: 'debug'
},
info: {
appenders: [ 'info', 'console' ],
level: 'info'
},
error: {
appenders: [ 'error', 'console' ],
level: 'error'
}
}
})
/**
* 日誌輸出 level爲bug
* @param { string } content
*/
exports.debug = ( content ) => {
let logger = log4j.getLogger('debug')
logger.level = levels.debug
logger.debug(content)
}
/**
* 日誌輸出 level爲info
* @param { string } content
*/
exports.info = ( content ) => {
let logger = log4j.getLogger('info')
logger.level = levels.info
logger.info(content)
}
/**
* 日誌輸出 level爲error
* @param { string } content
*/
exports.error = ( content ) => {
let logger = log4j.getLogger('error')
logger.level = levels.error
logger.error(content)
}
複製代碼
util.js
文件,作通用工具函數庫/**
* 通用函數封裝
* @auther 何小玍。
* @time 2021/07/28 22:07
*/
const log4j = require('./log4j')
const CODE = {
SUCCESS: 200, // 成功
PARAM_ERROR: 10001, // 參數錯誤
USER_ACCOUNT_ERROR: 20001, // 帳號或密碼錯誤
USER_LOGIN_ERROR: 30001, // 用戶未登陸
BUSINESS_ERROR: 40001, // 業務請求失敗
AUTH_ERROR: 50001, // 認證失敗或TOKEN過時
}
module.exports = {
/**
* 分頁結構封裝
* @param { number } pageNum 每頁數量
* @param { number } pageSize 當前頁碼
*/
pager({ pageNum = 1, pageSize = 1 }) {
pageNum *= 1
pageSize *= 1
const skipIndex = (pageNum - 1) * pageSize // 當前所翻頁數
return {
page: {
pageNum,
pageSize
},
skipIndex
}
},
// 成功回調
success(data = '', msg = '', code = CODE.SUCCESS) {
log4j.debug(data)
return { code, data, msg }
},
// 失敗回調
fail(data = '', msg = '', code = CODE>BUSINESS_ERROR) {
log4j.debug(msg)
return { code, data, msg }
},
// 把狀態碼暴露全局
CODE
}
複製代碼
在app.js裏面加入兩句話,實時打印get請求和post請求koa
// logger 中間件
app.use(async (ctx, next) => {
log4j.info(`get: ${ JSON.stringify(ctx.request.query) }`) // 監聽get請求
log4j.info(`params: ${ JSON.stringify(ctx.request.body) }`) // 監聽post請求
const start = new Date()
await next()
const ms = new Date() - start
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
})
複製代碼
而後運行npm dev
, 在瀏覽器打開localhost:3000,就能看到項目自動生成一個log文件夾
,裏面有着日誌信息async
公衆號:
小何成長
,佛系更文,都是本身曾經踩過的坑或者是學到的東西函數有興趣的小夥伴歡迎關注我哦,我是:
何小玍。
你們一塊兒進步鴨