Psr/Log PHP: पूर्ण गाइड उदाहरणों के साथ
लॉगिंग किसी भी गंभीर एप्लिकेशन के डेवलपमेंट का एक मुख्य पहलू है। इसके बिना प्रोडक्शन एनवायरनमेंट में एरर को डीबग करना, यूज़र के व्यवहार को ट्रैक करना या सिस्टम की परफॉरमेंस का विश्लेषण करना असंभव है। हालांकि, अगर प्रोजेक्ट में कई लाइब्रेरीज़ का उपयोग किया जाता है और हर एक अपने तरीके से लॉग लिखती है, तो डेवलपर को अव्यवस्था का सामना करना पड़ता है: अलग-अलग लेवल, अलग-अलग फॉर्मेट, अलग-अलग आउटपुट तरीके। इसी समस्या को हल करने के लिए PSR-3 (Logger Interface) स्टैंडर्ड बनाया गया था।
Psr/Log कोई लॉगिंग लाइब्रेरी नहीं है, बल्कि एक स्टैंडर्ड इंटरफ़ेस (कॉन्ट्रैक्ट का सेट) है जो परिभाषित करता है कि PHP में एक यूनिवर्सल लॉगर कैसा दिखना चाहिए। यह अलग-अलग महत्व के संदेशों (emergency, alert, critical, error, warning, notice, info, debug) को रिकॉर्ड करने के लिए आठ मेथड्स और एक यूनिवर्सल log() मेथड प्रदान करता है। PSR-3 को लागू करने वाली कोई भी लाइब्रेरी आसानी से किसी भी प्रोजेक्ट में इंटीग्रेट की जा सकती है जो इस इंटरफ़ेस की अपेक्षा करता है। यह डेवलपर को एप्लिकेशन कोड बदले बिना लॉगर के इम्प्लीमेंटेशन (जैसे Monolog से Analog) को बदलने की अनुमति देता है।
इस लेख में हम psr/log लाइब्रेरी को विस्तार से समझेंगे, इंस्टॉलेशन से लेकर जटिल प्रैक्टिकल उदाहरणों तक। आप सीखेंगे कि प्रत्येक मेथड का सही तरीके से उपयोग कैसे करें, प्लेसहोल्डर के साथ संदेशों को कैसे फॉर्मेट करें और सामान्य गलतियों से कैसे बचें। यह सामग्री PHP के शुरुआती और अनुभवी डेवलपर्स दोनों के लिए उपयोगी होगी।
इंस्टॉलेशन
psr/log लाइब्रेरी Composer के माध्यम से इंस्टॉल की जाती है, जो PHP के लिए मानक डिपेंडेंसी मैनेजर है। टर्मिनल में निम्न कमांड चलाएँ:
composer require psr/log
इंस्टॉलेशन के बाद आपके प्रोजेक्ट में vendor/psr/log डायरेक्टरी बन जाएगी। अगर आप कोई फ्रेमवर्क (Laravel, Symfony) उपयोग कर रहे हैं, तो PSR-3 संभवतः पहले से ही शामिल है। अपने PHP स्क्रिप्ट में ऑटोलोडर को शामिल करने के लिए यह लाइन जोड़ें:
require __DIR__ . '/vendor/autoload.php';
ध्यान दें: psr/log केवल एक इंटरफ़ेस है। वास्तविक लॉग रिकॉर्ड करने के लिए आपको एक इम्प्लीमेंटेशन की आवश्यकता होगी, जैसे monolog/monolog। Monolog इंस्टॉल करने के लिए:
composer require monolog/monolog
त्वरित शुरुआत
आइए Monolog (PSR-3 का सबसे लोकप्रिय इम्प्लीमेंटेशन) का उपयोग करके एक सरल लॉगिंग उदाहरण बनाते हैं।
<?php
require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// 'my_logger' नाम से लॉगर बनाएँ
$log = new Logger('my_logger');
// हैंडलर जोड़ें: DEBUG और उससे ऊपर के सभी संदेश app.log फ़ाइल में लिखें
$log->pushHandler(new StreamHandler(__DIR__ . '/app.log', Logger::DEBUG));
// कुछ संदेश लिखें
$log->info('एप्लिकेशन शुरू हुआ');
$log->warning('कॉन्फ़िगरेशन फ़ाइल लोड नहीं हो पाई, डिफ़ॉल्ट मानों का उपयोग किया जा रहा है');
$log->error('गंभीर त्रुटि: डेटाबेस उपलब्ध नहीं है');
echo "लॉग लिखे गए। app.log फ़ाइल जाँचें।";
इस स्क्रिप्ट को चलाने के बाद app.log फ़ाइल में आपको कुछ इस तरह दिखाई देगा:
[2025-04-10T15:30:45.123456+00:00] my_logger.INFO: एप्लिकेशन शुरू हुआ [] []
[2025-04-10T15:30:45.123789+00:00] my_logger.WARNING: कॉन्फ़िगरेशन फ़ाइल लोड नहीं हो पाई, डिफ़ॉल्ट मानों का उपयोग किया जा रहा है [] []
[2025-04-10T15:30:45.124012+00:00] my_logger.ERROR: गंभीर त्रुटि: डेटाबेस उपलब्ध नहीं है [] []
यह एक न्यूनतम कार्यशील उदाहरण है। अब हम इंटरफ़ेस के प्रत्येक मेथड को विस्तार से समझेंगे।
Psr\Log\LoggerInterface के मुख्य मेथड्स
Psr\Log\LoggerInterface इंटरफ़ेस 9 मेथड्स को परिभाषित करता है। पहले 8 विशिष्ट लॉगिंग लेवल के लिए मेथड्स हैं, और नौवां यूनिवर्सल log() मेथड है।