const express = require('express');
const winston = require('winston');
const app = express();
// Step 1: Create a Winston logger instance
const logger = winston.createLogger({
level: 'info', // Set the logging level to 'info'
format: winston.format.json(), // Use JSON format for log entries
transports: [
new winston.transports.Console(), // Log to the console
new winston.transports.File({ filename: 'error.log', level: 'error' }) // Log errors to a file
]
});
// Step 2: Middleware to log HTTP requests
app.use((req, res, next) => {
logger.info(`${req.method} ${req.url}`);
next();
});
// Step 3: Define a route
app.get('/', (req, res) => {
res.send('Hello, Express!');
});
// Step 4: Error handling middleware
app.use((err, req, res, next) => {
logger.error(err.message, err); // Log the error message and stack trace
res.status(500).send('Internal Server Error');
});
// Step 5: Start the Express server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});