Sometimes, we need a logger to help with debugging during development. In this section, we will implement a simple Koa console logger, in order to log our requests to the console or Terminal.
It is recommended that the logger middleware be registered close to the top of the middleware stack, so that it can wrap all subsequent middleware.
To register the koa-logger middleware, refer to the following code block:
// ./index.js
// ...
const logger = require('koa-logger');
app.use(logger());
// ...
We can configure the logger with a custom transporter, as seen in the koa-logger documentation (https://github.com/koajs/logger).
Now, the index.js file, with the logger implemented, will look as follows:
// ./index.js
const Koa = require('koa');
const router = require('./middleware/router');
const app = new Koa();
const logger = require('koa-logger');
// logger
app.use(logger());
const mongoose = require('mongoose');
mongoose.connect(
'mongodb://localhost:27017/koa-contact',
{ useNewUrlParser: true }
);
const db = mongoose.connection;
db.on('error', error => {
throw new Error(`error connecting to db: ${error}`);
});
db.once('open', () => console.log('database connected'));
// router
app.use(router.routes());
app.use(router.allowedMethods());
const port = process.env.PORT || 3000;
app.listen(port, () =>
console.log(`Server running on http://localhost:${port}`)
);
Now, when we run our app and hit the GET / endpoint, we will see the logs in the Terminal, showing request and response log data:
Server running on http://localhost:3000
database connected
<-- GET /
--> GET / 200 11ms