की डिफ़ॉल्ट प्रबंधक बदलें है मिला निम्नलिखित कोड एक WSGI (web2py) में से प्रत्येक के अनुरोध पर चल रहे आवेदन:मैं अजगर लकड़हारा
import logging, logging.handlers
from logging import StreamHandler, Formatter
def get_configured_logger(name):
logger = logging.getLogger(name)
if (len(logger.handlers) == 0):
# This logger has no handlers, so we can assume it hasn't yet been configured (Django uses similiar trick)
# === Configure logger ===
# Create Formatted StreamHandler:
FORMAT = "%(process)s %(thread)s: %(message)s"
formatter = logging.Formatter(fmt=FORMAT)
handler = logging.StreamHandler()
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.debug('CONFIGURING LOGGER')
return logger
# Get app specific logger:
logger = get_configured_logger(request.application)
logger.debug("TEST")
यह स्वरूपित हैंडलर मैं चाहता हूँ के साथ एक बार लकड़हारा कॉन्फ़िगर करने के लिए, मतलब है। यह काम करता है, सिवाय इसके कि मैं अपने stdout में डबल प्रविष्टियों हो रही है:
81893 4329050112: CONFIGURING LOGGER
DEBUG:dummy:CONFIGURING LOGGER
81893 4329050112: TEST
DEBUG:dummy:TEST
मैं अपने नए स्वरूपित हैंडलर का उपयोग और/डिफ़ॉल्ट एक छिपाने से छुटकारा पाने करते हैं?
मैंने पहले कभी इस कक्षा का उपयोग नहीं किया है, लेकिन आपको नहीं लगता कि logger.setLevel (logging.DEBUG) और logger.debug अनावश्यक है? – MiJyn
lkjoel- नहीं, वे दो अलग-अलग चीजें हैं। कॉलिंग '.debug (..)' डीबग स्तर पर लॉग प्रविष्टियां बनाता है, जबकि लॉगिंग स्तर सेट करते समय हैंडलर को उस स्तर पर * हैंडल * लॉग प्रविष्टियों को बताता है। – Yarin
क्या आप कहीं भी 'logging.basicConfig' को कॉल कर रहे हैं? यदि हां, तो टिप्पणी करें। – unutbu