目次
1. Python को logging मोड्युल भनेको के हो
Python कोlogging
मोड्युलले प्रोग्रामको कार्यस्थिति र त्रुटि जानकारी रेकर्ड गर्छ, र डिबगिङ वा सञ्चालन समयमा मोनिटरिङ गर्न प्रयोग हुने मानक उपकरण हो। print
स्टेटमेन्टसँगको भिन्नता भनेको, logging
मोड्युल बहु-क्षमतायुक्त छ र लगको स्तर, आउटपुटको गन्तव्य, ढाँचा आदि सूक्ष्म रूपमा नियन्त्रण गर्न सकिन्छ भन्ने हो। यसका कारण, विकासकर्ताले प्रोग्रामका असामान्यताहरू र अवस्थालाई कुशलतापूर्वक बुझ्न सक्छन्।लग स्तरका प्रकार र उपयोग
- DEBUG: विस्तृत डिबगिङ जानकारी। मुख्य रूपमा विकास चरणमा प्रयोग गरिन्छ।
- INFO: सामान्य कार्यसम्पादन सम्बन्धी जानकारी। सही कार्यसम्पादनको पुष्टि गर्न प्रयोग गरिन्छ।
- WARNING: साना समस्या वा सावधानीका कुरा। प्रोग्रामको कार्यसम्पादनमा प्रभाव नपरे पनि, सम्भावित समस्याको सङ्केत गर्छ।
- ERROR: केही कार्यहरू सही रूपमा नचल्दा आउने त्रुटि सन्देश। प्रोग्राम चलाउन बाधा पर्ने अवस्थालाई देखाउँछ।
- CRITICAL: गम्भीर त्रुटि। प्रोग्रामको समग्र कार्यान्वयन जारी राख्न नसकिने घातक समस्यालाई देखाउँछ।
2. logging को आधारभूत प्रयोग गर्ने तरिका
logging
मोड्युल प्रयोग गरेर लग आउटपुट गर्ने मूलभूत तरिका हेरौँ।import logging
# लग स्तर र ढाँचा सेट गर्नुहोस्
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
# प्रत्येक स्तरमा लग आउटपुट
logging.debug('डिबग जानकारी: विस्तृत निदान जानकारी')
logging.info('सूचना सन्देश: सामान्य सञ्चालनको पुष्टि')
logging.warning('चेतावनी सन्देश: ध्यान आवश्यक पर्ने अवस्था')
logging.error('त्रुटि सन्देश: समस्या उत्पन्न भयो')
logging.critical('क्रिटिकल सन्देश: प्रणाली रोकियो')
logging.basicConfig()
प्रयोग गरेर, लगको आउटपुट गन्तव्य(डिफल्टमा मानक आउटपुट)、लग स्तर、र ढाँचा सेट गर्छौं। माथिको उदाहरणमा, level=logging.DEBUG
सेट गरिएको भएकाले, DEBUG स्तर वा त्यसभन्दा माथिका सबै लगहरू आउटपुट हुन्छन्。3. लगको आउटपुट गन्तव्य र ढाँचाको अनुकूलन
पूर्वनिर्धारित आउटपुट गन्तव्य परिवर्तन गर्न वा लगको ढाँचा अनुकूलन गर्न पनि सम्भव छ। उदाहरणका लागि、लगलाई फाइलमा आउटपुट गर्नFileHandler
प्रयोग गर्नुहोस्。फाइलमा आउटपुट र ढाँचा
import logging
# फाइल ह्यान्डलरको सेटिङ
file_handler = logging.FileHandler('app.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
# लगरको सेटिङ
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(file_handler)
# लगको आउटपुट
logger.debug('फाइलमा जाने डिबग जानकारी')
logger.info('फाइलमा जाने सूचना सन्देश')
माथिको कोडमा、FileHandler
प्रयोग गरेर लगलाई app.log
मा आउटपुट गरिन्छ।Formatter
द्वारा निर्दिष्ट ढाँचाको आधारमा、लग सन्देशहरू लेखिन्छन्。4. लॉग फाइल रोटेशन
दीर्घकालीन सञ्चालनमा, लॉग फाइल अत्यधिक ठूलो नबढोस् भन्नका लागि फाइल रोटेशन महत्वपूर्ण हुन्छ।RotatingFileHandler
को प्रयोग गर्दा, लॉग फाइलको साइज र फाइलको संख्या नियन्त्रण गर्न सकिन्छ。RotatingFileHandler
को प्रयोगको उदाहरण
import logging
from logging.handlers import RotatingFileHandler
# रोटेशन ह्यान्डलरको सेटिङ
handler = RotatingFileHandler('app.log', maxBytes=5000, backupCount=3)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# लगरको सेटिङ
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(handler)
# लॉगको आउटपुट
for i in range(100):
logger.debug(f'रोटेशन परीक्षण {i}')
यस कोडमा, maxBytes
द्वारा लॉग फाइलको अधिकतम साइज 5000 बाइटमा सेट गरिएको छ, र backupCount
द्वारा ब्याकअप फाइलहरूको संख्या 3 मा सेट गरिएको छ। लॉग फाइलले निर्दिष्ट गरिएको साइज पार गरेपछि, नयाँ फाइलमा लॉग लेखिन्छ र पुराना फाइलहरू ब्याकअप गरिन्छ。
5. लग स्तरअनुसार फाइल आउटपुट
विशिष्ट लग स्तरअनुसार फरक फाइलमा लग आउटपुट गर्दा, लगको पढ्न सजिलोपन र विश्लेषणको दक्षता बढाउन सकिन्छ। यसका लागि, कस्टम फिल्टर र धेरैवटाFileHandler
प्रयोग गरिन्छ।लग स्तरअनुसार फाइल आउटपुट उदाहरण
import logging
class ErrorFilter(logging.Filter):
def filter(self, record):
return record.levelno == logging.ERROR
# ERROR स्तरका लगहरूलाई छुट्टै फाइलमा आउटपुट
error_handler = logging.FileHandler('error.log')
error_handler.setLevel(logging.ERROR)
error_handler.addFilter(ErrorFilter())
error_handler.setFormatter(formatter)
# लगरको सेटिङ
logger.addHandler(error_handler)
# लगको आउटपुट
logger.error('ERROR स्तरका लगहरू फाइलमा आउटपुट गरिन्छ')
यस उदाहरणमा、ErrorFilter
कक्षा बनाइ ERROR स्तरका लगहरू मात्र फिल्टर गरी、error.log
मा आउटपुट गरिरहेको छ। यसरी गर्दा, त्रुटि लग मात्र छुट्टै फाइलमा विभाजन गरेर रेकर्ड गर्न सकिन्छ।6. सर्वोत्तम अभ्यास र सावधानीहरू
लगहरूको प्रभावकारी रूपमा उपयोग गर्न, तलका सर्वोत्तम अभ्यास र सावधानीहरूलाई ध्यानमा राख्नुपर्छ।लग स्तरको उचित प्रयोग
- विकास चरणमा
DEBUG
स्तर प्रयोग गरेर विस्तृत जानकारी रेकर्ड गर्नुहोस्, र सञ्चालन समयमाINFO
वाWARNING
स्तरमा स्विच गरी महत्त्वपूर्ण जानकारी मात्र रेकर्ड गर्नुहोस्। - अत्यधिक लग आउटपुटले प्रदर्शनमा कमी आउन सक्छ, त्यसैले आवश्यक जानकारी मात्र रेकर्ड गर्नेमा ध्यान दिनुहोस्।
लगको सुरक्षा र गोपनीयता
- लगमा व्यक्तिगत वा गोप्य जानकारी रेकर्ड नगर्नेमा ध्यान दिनुहोस्। आवश्यक परेमा डेटा मास्क गर्ने जस्ता उपायहरू अपनाउनुहोस्।
- लग फाइलमा उपयुक्त अनुमति सेटिङ गरी, अनधिकृत पहुँच रोक्नुहोस्।
7. सारांश
logging
मोड्युलले कार्यक्रमको चलिरहेको अवस्थालाई कुशलतापूर्वक अभिलेख राख्छ र डिबगिङ तथा सञ्चालनका बेला अत्यन्त उपयोगी हुन्छ। लॉगको स्तर, आउटपुट गन्तव्य, ढाँचा, रोटेशन आदि उचित रूपमा सेट गरेर, कार्यक्रमको सञ्चालन अवस्थालाई विस्तृत रूपमा बुझ्दा समस्याहरूको समयमै पहिचान र समाधान गर्न सकिन्छ। उत्तम अभ्यासहरू प्रयोग गरेर, उचित लॉग व्यवस्थापन कार्यान्वयन गरौँ।