Monolog PHP: पूरी गाइड, उदाहरण और उपयोग विधि

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Monolog क्या है और इसकी आवश्यकता क्यों है?

Monolog PHP में लॉगिंग के लिए एक मानक लाइब्रेरी है। यह लॉग को विभिन्न चैनलों (फ़ाइलें, डेटाबेस, ईमेल, सिस्टम लॉग, बाहरी सेवाएं आदि) में रिकॉर्ड करने के लिए एक लचीला और शक्तिशाली टूलकिट प्रदान करती है। Monolog PHP एप्लिकेशनों के लिए डी-फैक्टो मानक है, खासकर Symfony, Laravel और अन्य आधुनिक फ्रेमवर्क के इकोसिस्टम में।

इस लाइब्रेरी की आवश्यकता क्यों है? किसी भी एप्लिकेशन में घटनाओं को ट्रैक करना आवश्यक है: त्रुटियाँ, चेतावनियाँ, सूचनात्मक संदेश, डीबग जानकारी। Monolog आपको यह सब करने देता है:

  • लॉगिंग को केंद्रीकृत करें — एक ही फॉर्मेट में और एप्लिकेशन के किसी भी स्थान से लॉग लिखें।
  • चैनलों को लचीले ढंग से कॉन्फ़िगर करें — गंभीर त्रुटियों को Telegram/Slack पर भेजें, और सूचनात्मक संदेशों को फ़ाइल में भेजें।
  • संदेशों को फ़ॉर्मेट करें — तारीख, स्तर, संदर्भ, कॉल स्टैक जोड़ें।
  • लॉग को फ़िल्टर करें — केवल एक निश्चित स्तर के संदेशों को प्रोसेस करें।
  • फ्रेमवर्क के साथ एकीकृत करें — Symfony, Laravel, Yii2 में Monolog का ही उपयोग होता है।

इंस्टॉलेशन

Monolog को Composer के माध्यम से इंस्टॉल किया जाता है, जो PHP के लिए मानक पैकेज मैनेजर है।

composer require monolog/monolog

यदि आप PHP 8.0+ का उपयोग कर रहे हैं, तो नवीनतम स्थिर संस्करण इंस्टॉल करने की अनुशंसा की जाती है। इंस्टॉलेशन के बाद प्रोजेक्ट में vendor फ़ोल्डर और निर्भरता के साथ composer.json फ़ाइल बन जाएगी।

त्वरित शुरुआत

सबसे सरल उदाहरण — फ़ाइल में लॉग लिखना:

<?php
require 'vendor/autoload.php';

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// 'my_app' नाम का लॉगर बनाएं
$log = new Logger('my_app');
// हैंडलर जोड़ें — फ़ाइल में लिखना
$log->pushHandler(new StreamHandler('app.log', Logger::WARNING));

// अब लॉग कर सकते हैं
$log->warning('यह एक चेतावनी है');
$log->error('यह एक त्रुटि है');

echo "लॉग app.log में लिखे गए";
?>

स्क्रिप्ट चलाने के बाद app.log फ़ाइल में कुछ इस तरह दिखाई देगा:

[2025-04-09T10:30:00.123456+00:00] my_app.WARNING: यह एक चेतावनी है [] []
[2025-04-09T10:30:00.123789+00:00] my_app.ERROR: यह एक त्रुटि है [] []

मुख्य तरीके और फंक्शन

Monolog के प्रमुख तरीकों पर नज़र डालते हैं। ये सभी Monolog\Logger क्लास या संबंधित क्लास का हिस्सा हैं।

1. pushHandler(HandlerInterface $handler)

यह क्या करता है: स्टैक में एक हैंडलर जोड़ता है। लॉगर में कई हैंडलर हो सकते हैं, और प्रत्येक को सभी संदेश मिलेंगे (यदि फ़िल्टरिंग कॉन्फ़िगर नहीं की गई है)।

पैरामीटर:

  • $handler — एक ऑब्जेक्ट जो Monolog\Handler\HandlerInterface को इम्प्लीमेंट करता है (जैसे StreamHandler, FirePHPHandler, SlackHandler)।

उदाहरण:

$log = new Logger('app');
$log->pushHandler(new StreamHandler('debug.log', Logger::DEBUG));
$log->pushHandler(new StreamHandler('errors.log', Logger::ERROR));
// अब ERROR और उससे ऊपर के स्तर के संदेश दोनों फ़ाइलों में जाएंगे

2. addRecord(int $level, string $message, array $context = [])

यह क्या करता है: लॉग रिकॉर्ड करने का बेसिक तरीका। आमतौर पर इसे सीधे कॉल नहीं किया जाता, बल्कि रैपर तरीकों (debug(), info() आदि) का उपयोग किया जाता है।

पैरामीटर:

  • $level — लॉगिंग स्तर (कॉन्स्टेंट: Logger::DEBUG, Logger::INFO, Logger::WARNING आदि)।
  • $message — संदेश का टेक्स्ट।
  • $context — अतिरिक्त डेटा की ऐरे (जैसे यूज़र ID, IP पता)।

उदाहरण:

$log->addRecord(Logger::INFO, 'यूज़र ने लॉगिन किया', ['user_id' => 123]);

अनुशंसाएँ