Create Better Logging with Bunyan NPM module in nodeJs
Logging
Bunyan
NPM
module
nodeJs
- By Sudarshan Vishwakarma
- Jan 26th, 2022
- 0 comments
- 10
Whenever there were any server alerts in my team at Adobe, the first thing that we used to do was to look at the logs. And in most cases, we would track down the issue within minutes. Logs can be valuable in security, debugging, and analytics.
When debugging, your first friend is the console. The most simple type of logging you could do is using console.log and console.error methods.
console.log("hello Codesolution")
This would output Hello World in the terminal window.
But this is not enough in production because
- Console logs are synchronous(unless you use pipe)
- The console is completely manual, so you have to format, manage and debug on your own.
Given this, I decided to go ahead with Bunyan because ultimately we want to use the logs primarily for analytics (and I liked their JSON format). Once I installed Bunyan I found a package, express-bunyan-logger, that was doing exactly what we were looking for.
npm install express-bunyan-logger express
I introduced the following code in express.js before the controller code
app.use(require('express-bunyan-logger')({name: 'nodeBunyan',
streams: [{
type: 'rotating-file',
level: 'info', // loging level
path: '/var/log/nodeBunyan.log', //filepath create log file
period: '1d', // daily rotation
count: 3, // keep 3 back copies
}]
}));
const express = require('express') const app = express() const path = require('path') app.use(require('express-bunyan-logger')({name: 'ShotPitch', streams: [{ type: 'rotating-file', level: 'info', // loging level path: path.join(__dirname, 'nodebunyan.log'), //filepath create log file period: '1d', // daily rotation count: 3, // keep 3 back copies }] })); app.get('/', function (req, res) { res.send('Hello World') }) app.listen(9000)