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')orimport 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:
| Feature | Usage Example | Description |
|---|---|---|
| Import Morgan | import morgan from 'morgan' | Import Morgan middleware module |
| Add middleware | app.use(morgan('dev')) | Log HTTP requests with 'dev' format |
| Common formats | 'dev', 'combined', 'tiny' | Predefined log output styles |
| Custom format | morgan(':method :url :status') | Define your own log format string |
| Skip logging | app.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.