0
0
ExpressHow-ToBeginner · 3 min read

How to Use Morgan in Express for HTTP Request Logging

To use morgan in express, first install it with npm install morgan. Then import it and add it as middleware using app.use(morgan('dev')) to log HTTP requests in your app.
📐

Syntax

The basic syntax to use Morgan in Express is:

  • const morgan = require('morgan') or import morgan from 'morgan' to import Morgan.
  • app.use(morgan('format')) to add Morgan as middleware, where 'format' is the logging style.

Common formats include 'dev' for concise colored output and 'combined' for detailed Apache-style logs.

javascript
import express from 'express';
import morgan from 'morgan';

const app = express();

app.use(morgan('dev'));
💻

Example

This example shows a simple Express server using Morgan to log HTTP requests in the 'dev' format. When you visit the root URL, Morgan logs the request method, URL, status, response time, and size.

javascript
import express from 'express';
import morgan from 'morgan';

const app = express();

// Use Morgan middleware with 'dev' format
app.use(morgan('dev'));

app.get('/', (req, res) => {
  res.send('Hello, Morgan!');
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});
Output
GET / 200 12.345 ms - 13
⚠️

Common Pitfalls

Common mistakes when using Morgan include:

  • Not installing Morgan before importing it, causing errors.
  • Forgetting to add app.use(morgan(...)), so no logs appear.
  • Using Morgan after routes, which means requests are not logged.
  • Using deprecated formats or incorrect format strings.

Always add Morgan middleware before your routes to ensure all requests are logged.

javascript
import express from 'express';
import morgan from 'morgan';

const app = express();

// Wrong: Adding Morgan after routes means no logs for those routes
app.get('/', (req, res) => {
  res.send('Hello');
});

app.use(morgan('dev'));

// Correct: Morgan should be added before routes
// app.use(morgan('dev'));
// app.get('/', (req, res) => {
//   res.send('Hello');
// });
📊

Quick Reference

Here is a quick reference for Morgan usage in Express:

FeatureUsage ExampleDescription
Import Morganimport morgan from 'morgan';Load Morgan middleware into your app
Add Middlewareapp.use(morgan('dev'));Log requests in 'dev' format
Common Formats'dev', 'combined', 'tiny', 'short'Predefined logging styles
Custom Formatmorgan(':method :url :status')Define your own log format
Skip Loggingapp.use(morgan('dev', { skip: (req) => req.url === '/health' }));Skip logging for specific requests

Key Takeaways

Install Morgan with npm and import it before use.
Add Morgan middleware with app.use(morgan('dev')) before your routes.
Choose a logging format like 'dev' or 'combined' based on your needs.
Avoid adding Morgan after routes to ensure all requests are logged.
You can customize logging formats and skip logging for certain routes.