यहां कुछ वास्तव में सरल उत्तर दिए गए हैं। सबसे पहले basicConfig(...)
कथन पर टिप्पणी करना है। इसका प्रभाव किसी भी लॉगर्स, हैंडलर या फॉर्मेटर्स को स्थापित नहीं करेगा जिसका अर्थ है कि आपकी डीबग(), जानकारी(), आदि कॉल प्रभावी रूप से नो-ऑप्स होंगे।
एक और सरल जवाब basicConfig()
में लॉगिंग स्तर को DEBUG
से अधिक कुछ कॉल करने के लिए सेट करना है। CRITICAL + 1
यह सुनिश्चित करेगा कि आप कभी भी लॉग संदेश नहीं देखेंगे।
हालांकि आपने इस कोड को उत्पादन में स्थानांतरित करने के बारे में कुछ बताया है, तो आप शायद -q
और -v
कमांड लाइन विकल्प प्रदान करते हैं (माना जाता है कि यह एक सीएलआई उपकरण है)। मेरा सामान्य दृष्टिकोण WARNING
स्तर पर शुरू करना है, और प्रत्येक -q
फ़िल्टर स्तर को बढ़ाकर शांत लॉगिंग की ओर बढ़ना है। इसके विपरीत, प्रत्येक -v
के लिए, अधिक वर्बोज़ लॉगिंग की ओर बढ़ें। यहां कोड का एक स्निपेट है जो वास्तव में करता है।
from argparse import ArgumentParser
from logging import basicConfig, CRITICAL, ERROR, WARNING, INFO, DEBUG
parser = ArgumentParser()
parser.add_argument("-v", "--verbose", action="count")
parser.add_argument("-q", "--quiet", action="count")
arguments = parser.parse_args()
raw_log_level = 2 + (arguments.verbose or 0) - (arguments.quiet or 0)
if raw_log_level <= 0:
log_level = CRITICAL
elif raw_log_level == 1:
log_level = ERROR
elif raw_log_level == 2: # default
log_level = WARNING
elif raw_log_level == 3:
log_level = INFO
else:
log_level = DEBUG
basicConfig(level=log_level)
क्या यह मूल लॉगिंग 101 नहीं है? – delnan
@ डेलमैन: यदि 101 है तो कृपया एक सर्वोत्तम अभ्यास उत्तर लिखें – Merlin
मैं इसके लिए योग्य नहीं हूं, मैं बस इतना निश्चित हूं कि इसे करने का स्पष्ट तरीका, सभी संदेशों को अस्वीकार करने के लिए फ़िल्टरिंग सेट करना, किसी भी सभ्य लॉगिंग में वर्णित है ट्यूटोरियल। – delnan