前言
本文基于手动搭建koa+ts项目框架(路由篇)新增日志记录
一、安装koa-logger
npm i -S koa-onerror
and
npm i -S koa-logger
and
npm i -D @types/koa-logger
二、引入koa-logger
并使用
./src/index.ts
文件引入
import Koa from "koa";
import logger from 'koa-logger'
import index from "./routes/index"
import users from "./routes/user"
const app = module.exports = new Koa();
// 中间件
app.use(logger())
// 日志记录
app.use(async (ctx, next) => {
const start = new Date()
await next()
const ms = Number(new Date()) - Number(start)
console.log(ctx.query)
console.log(ctx.body)
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
})
// 接口路由
app.use(index.routes())
app.use(users.routes())
if (!module.parent) app.listen(3000);
执行npm run dev
开启服务,使用postman
查看相关接口
如图,打印了调用的接口项目信息(可以根据项目需要,记录相关日志到数据库啦)
三、使用koa-log4开启服务log
npm i -S koa-log4
- src/utils/logger.ts
const path = require('path');
const log4js = require('koa-log4');
const RUNTIME_PATH = path.resolve(__dirname, '../');
const LOG_PATH = path.join(RUNTIME_PATH, 'log');
log4js.configure({
// 日志的输出
appenders: {
access: {
type: 'dateFile',
pattern: '-yyyy-MM-dd.log', //生成文件的规则
alwaysIncludePattern: true, // 文件名始终以日期区分
encoding: 'utf-8',
filename: path.join(LOG_PATH, 'access.log') //生成文件名
},
application: {
type: 'dateFile',
pattern: '-yyyy-MM-dd.log',
alwaysIncludePattern: true,
encoding: 'utf-8',
filename: path.join(LOG_PATH, 'application.log')
},
out: {
type: 'console'
}
},
categories: {
default: { appenders: [ 'out' ], level: 'info' },
access: { appenders: [ 'access' ], level: 'info' },
application: { appenders: [ 'application' ], level: 'all'}
}
});
// getLogger 传参指定的是类型
export const logger = log4js.getLogger('application');
export const accessLogger = () => log4js.koaLogger(log4js.getLogger('access')); // 记录所有访问级别的日志
- src/index.ts
import Koa from "koa";
import index from "./routes/index"
import users from "./routes/usr"
import { accessLogger } from './utils/logger';
const app = module.exports = new Koa();
// 中间件
app.use(logger())
app.use(accessLogger())
// 接口路由
app.use(index.routes())
app.use(users.routes())
if (!module.parent) app.listen(3000);
- 开启服务后,调用接口就会写入日志文件
总结
根据koa-logger
依赖,可记录实际用户访问的接口记录~