我正在尝试使用koajs/bunyan-logger软件包从Koa应用获取日志。但是由于将每个路由都分离到了自己的文件中。 我得到了:
TypeError: Cannot read property 'info' of undefined
at router.get (F:\Projects\DocuEngine\src\server\routes\index.js:10:13)
at dispatch (F:\Projects\DocuEngine\node_modules\koa-router\node_modules\koa-compose\index.js:44:32)
at next (F:\Projects\DocuEngine\node_modules\koa-router\node_modules\koa-compose\index.js:45:18)
at F:\Projects\DocuEngine\node_modules\koa-router\lib\router.js:346:16
at dispatch (F:\Projects\DocuEngine\node_modules\koa-router\node_modules\koa-compose\index.js:44:32)
at F:\Projects\DocuEngine\node_modules\koa-router\node_modules\koa-compose\index.js:36:12
at dispatch (F:\Projects\DocuEngine\node_modules\koa-router\lib\router.js:351:31)
at dispatch (F:\Projects\DocuEngine\node_modules\koa-compose\index.js:42:32)
at F:\Projects\DocuEngine\node_modules\koa-compose\index.js:34:12
at Application.handleRequest (F:\Projects\DocuEngine\node_modules\koa\lib\application.js:166:12)
我的app.js文件-
const config = require('./config/config');
const Koa = require('koa');
const koaBunyanLogger = require('koa-bunyan-logger');
const bunyan = require('bunyan');
const indexRoute = require('./server/routes/index');
const app = new Koa();
app.use(indexRoute.routes())
.use(indexRoute.allowedMethods())
.use(koaBunyanLogger())
.use(koaBunyanLogger.requestIdContext())
.use(koaBunyanLogger.requestLogger());
const server = app.listen(config.port).on('error',(err) => {
console.error(err);
});
module.exports = server;
我的index.js文件-
const Router = require('koa-router');
const router = new Router();
router.get('/',async (ctx) => {
ctx.body = {
data: 'Sending some JSON',};
ctx.log.info('Got a request from %s for %s',ctx.request.ip,ctx.path);
});
module.exports = router;
不进行记录就可以正常工作。如果我将路线放在app.js文件中,则可以很好地记录日志。