Logging System (Winston / Morgan)

Logging System in Express.js (Winston & Morgan)

Production-ready Express.js অ্যাপ্লিকেশনের জন্য Logging অত্যন্ত গুরুত্বপূর্ণ। Winston এবং Morgan ব্যবহার করে কীভাবে শক্তিশালী Logging System তৈরি করা যায় তা এখানে বিস্তারিতভাবে আলোচনা করা হয়েছে।

📌 Logging কেন প্রয়োজন?

  • Error এবং Bug দ্রুত শনাক্ত করা
  • User request এবং response ট্র্যাক করা
  • Server performance মনিটর করা
  • Production environment-এ Debugging সহজ করা

🧩 Morgan কী?

Morgan হলো Express.js এর জন্য একটি HTTP request logger middleware। এটি প্রতিটি incoming request-এর method, URL, status code, response time ইত্যাদি লগ করে।

🔧 Morgan Install & Setup

npm install morgan
        
const morgan = require('morgan');

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

🏗️ Winston কী?

Winston হলো একটি powerful এবং flexible logging library। এটি বিভিন্ন level (info, warn, error) অনুযায়ী log তৈরি করতে পারে এবং file, console বা external service-এ log সংরক্ষণ করতে পারে।

npm install winston
      

⚙️ Winston Basic Configuration

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ],
});

module.exports = logger;
        

🖥️ Console Logging (Development)

if (process.env.NODE_ENV !== 'production') {
  logger.add(new winston.transports.Console({
    format: winston.format.simple(),
  }));
}
        

🧪 Logger ব্যবহার করার উদাহরণ

const logger = require('./logger');

app.get('/', (req, res) => {
  logger.info('Home route accessed');
  res.send('Hello World');
});

app.get('/error', (req, res) => {
  logger.error('Something went wrong!');
  res.status(500).send('Error occurred');
});
      

🔗 Morgan + Winston একসাথে ব্যবহার

Production অ্যাপে সাধারণত Morgan দিয়ে HTTP request capture করে Winston দিয়ে file-এ সংরক্ষণ করা হয়।

app.use(morgan('combined', {
  stream: {
    write: (message) => logger.info(message.trim())
  }
}));
      

✅ Best Practices

  • Production-এ console.log ব্যবহার করবেন না
  • Different log level ব্যবহার করুন (info, warn, error)
  • Log rotation (daily log files) ব্যবহার করুন
  • Sensitive data (password, token) কখনো log করবেন না
👼 Quiz
/

লোড হচ্ছে...