0
0
ExpressHow-ToBeginner · 3 min read

How to Use Morgan Middleware in Express for HTTP Logging

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

Syntax

The basic syntax to use Morgan middleware 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' defines the log style.

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

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

const app = express()

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

Example

This example shows a simple Express server using Morgan middleware to log HTTP requests in the console with the 'dev' format.

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

const app = express()

// Add Morgan middleware for logging
app.use(morgan('dev'))

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

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

Common Pitfalls

Common mistakes when using Morgan middleware include:

  • Not installing Morgan before importing it, causing errors.
  • Forgetting to add app.use(morgan(...)), so no logs appear.
  • Placing Morgan middleware after routes, which prevents logging requests properly.
  • Using deprecated or incorrect format strings.

Always add Morgan middleware early in your middleware stack.

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('No logs here')
})
app.use(morgan('dev'))

// RIGHT: Add Morgan before routes
// app.use(morgan('dev'))
// app.get('/', (req, res) => {
//   res.send('Logs will show')
// })
📊

Quick Reference

Here is a quick reference for Morgan usage in Express:

FeatureUsage ExampleDescription
Import Morganimport morgan from 'morgan'Import Morgan middleware module
Add middlewareapp.use(morgan('dev'))Log HTTP requests with 'dev' format
Common formats'dev', 'combined', 'tiny'Predefined log output styles
Custom formatmorgan(':method :url :status')Define your own log format string
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 early with app.use(morgan('dev')) to log requests.
Choose a log format like 'dev' or 'combined' based on your needs.
Place Morgan before your routes to ensure all requests are logged.
Use options like skip to customize logging behavior.