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')orimport 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:
| Feature | Usage Example | Description |
|---|---|---|
| Import Morgan | import morgan from 'morgan'; | Load Morgan middleware into your app |
| Add Middleware | app.use(morgan('dev')); | Log requests in 'dev' format |
| Common Formats | 'dev', 'combined', 'tiny', 'short' | Predefined logging styles |
| Custom Format | morgan(':method :url :status') | Define your own log format |
| 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 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.