Django
लॉगिंग
खोज…
सिसलॉग सेवा में प्रवेश करना
Django को स्थानीय या दूरस्थ syslog सेवा में आउटपुट लॉग में कॉन्फ़िगर करना संभव है। इस विन्यास में अजगर बेसिन SysLogHandler का उपयोग किया गया है।
from logging.handlers import SysLogHandler
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format' : "[YOUR PROJECT NAME] [%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt' : "%d/%b/%Y %H:%M:%S"
}
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
},
'syslog': {
'class': 'logging.handlers.SysLogHandler',
'formatter': 'standard',
'facility': 'user',
# uncomment next line if rsyslog works with unix socket only (UDP reception disabled)
#'address': '/dev/log'
}
},
'loggers': {
'django':{
'handlers': ['syslog'],
'level': 'INFO',
'disabled': False,
'propagate': True
}
}
}
# loggers for my apps, uses INSTALLED_APPS in settings
# each app must have a configured logger
# level can be changed as desired: DEBUG, INFO, WARNING...
MY_LOGGERS = {}
for app in INSTALLED_APPS:
MY_LOGGERS[app] = {
'handlers': ['syslog'],
'level': 'DEBUG',
'propagate': True,
}
LOGGING['loggers'].update(MY_LOGGERS)
Django बुनियादी लॉगिंग कॉन्फ़िगरेशन
आंतरिक रूप से, Django पायथन लॉगिंग सिस्टम का उपयोग करता है। किसी प्रोजेक्ट के लॉगिंग को कॉन्फ़िगर करने का कई तरीका है। यहाँ एक आधार है:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'default': {
'format': "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt': "%Y-%m-%d %H:%M:%S"
},
},
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'default'
},
},
'loggers': {
'django': {
'handlers': ['console'],
'propagate': True,
'level': 'INFO',
},
}
}
formatters
इसका उपयोग लॉग्स उपस्थिति को कॉन्फ़िगर करने के लिए किया जा सकता है जब वे आउटपुट पर मुद्रित होते हैं। आप प्रत्येक भिन्न फ़ॉर्मेटर में एक कुंजी स्ट्रिंग सेट करके कई फ़ॉर्मेटर्स को परिभाषित कर सकते हैं। हैंडलर की घोषणा करते समय एक फॉर्मेटर का उपयोग किया जाता है।
हैंडलर
कॉन्फ़िगर करने के लिए उपयोग किया जा सकता है जहां लॉग मुद्रित किए जाएंगे। ऊपर के उदाहरण में, उन्हें stdout और stderr पर भेजा जाता है। विभिन्न हैंडलर कक्षाएं हैं:
'rotated_logs': {
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/var/log/my_project.log',
'maxBytes': 1024 * 1024 * 5, # 5 MB
'backupCount': 5,
'formatter': 'default'
'level': 'DEBUG',
},
यह फ़ाइल filename
फाइल में लॉग का उत्पादन करेगा। इस उदाहरण में, एक नई लॉग फ़ाइल बनाई जाएगी जब करंट 5 एमबी के आकार तक पहुंच जाएगा (पुराने वाले का नाम बदलकर my_project.log.1 हो जाएगा) और नवीनतम 5 फ़ाइलों को संग्रह के लिए रखा जाएगा।
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
},
यह ADMINS
सेटिंग चर में निर्दिष्ट उपयोगकर्ताओं को eamil द्वारा प्रत्येक लॉग भेजेगा। स्तर ERROR
सेट है, इसलिए केवल ERROR
स्तर वाले लॉग ई-मेल द्वारा भेजे जाएंगे। उत्पादन सर्वर पर संभावित त्रुटियों 50x पर सूचित रहने के लिए यह अत्यंत उपयोगी है।
Django के साथ अन्य हैंडलर का उपयोग किया जा सकता है। पूरी सूची के लिए, कृपया संबंधित दस्तावेज पढ़ें। फ़ॉर्मेटर्स की तरह, आप एक ही प्रोजेक्ट में कई हैंडलर्स को परिभाषित कर सकते हैं, प्रत्येक अलग-अलग कुंजी स्ट्रिंग के लिए सेटिंग। प्रत्येक हैंडलर का उपयोग एक विशिष्ट लकड़हारे में किया जा सकता है।
वालों
में LOGGING
, प्रत्येक मॉड्यूल के लिए अंतिम भाग कॉन्फ़िगर न्यूनतम प्रवेश स्तर, उपयोग करने के लिए संचालकों (रों), आदि