使用 log4js 打日志的时候,获取不到上下文的 status 状态码,解决方案:

利用 Koa 洋葱圈模型和 await 的用法,在路由前使用 Logger 中间件,

app.use(AccessOrigin).use(Logger).use(router.routes());

中间件里使用

1
2
3
4
5
6
7
const Logger = async (ctx: Context, next: Next) => {
await next();
const logContent = `${ctx.status} | ${ctx.headers.origin || "undefined"} | ${
ctx.method
} | ${ctx.path}`;
logger.info(logContent);
};

实现请求结束以后再执行日志内容拼接