How to log views with Node.js

Logging views to a website is essential for understanding the user behavior, optimizing performance, and monitoring security. In this article, we will see how to create a simple logging system for views using Node.js. This system will be able to record user access data in a log file, including data such as the user's IP, visit's timestamp, visited URL, and other optional information.

Install the necessary modules: express to create the web server and morgan to handle request logging.


npm install express morgan

Start by creating a file called app.js to configure the server with Express. In this file, we will set up a simple web server that responds to user requests.

 
 
// app.js 
const express = require('express');
const morgan = require('morgan');
const fs = require('fs');
const path = require('path');

const app = express();
const port = 3000;

// Create a log file to save visits 
const accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' });

// Configure morgan to log requests 
app.use(morgan(':remote-addr - :method :url :status :response-time ms', { stream: accessLogStream }));

app.get('/', (req, res) => {
  return res.send('Welcome to our site!');
});

app.listen(port, () => {
  console.log(`Server listening on http://localhost:${port}`);
});

Code explanation:

  1. Server Creation: app.listen() starts the server on port 3000.
  2. Morgan Configuration: morgan is configured to write logs to the access.log file. The specified log format includes:
    • :remote-addr: The visitor's IP address.
    • :method: The HTTP method used (GET, POST, etc.).
    • :url: The URL requested.
    • :status: The response status code.
    • :response-time: The time it took the server to respond.

Each view will be logged with this information, which helps us understand the activities on the site.

You can customize Morgan logs to include additional details, such as user-agent or referrer. To do this, simply edit the morgan configuration string.


app.use(morgan(':remote-addr - :method :url :status :response-time ms - :user-agent', { stream: accessLogStream }));

Conclusion

We've seen how to create a logging system for a website with Node.js. This system collects useful data that can improve user experience, ensure security, and optimize site performance. A more advanced logging setup might include the use of databases and visualization tools, but this basic system is already a good starting point for understanding and monitoring the activity on your site.

Back to top