जैसा कि उल्लेख किया गया है, हैंडलर बनाने के लिए इतना आसान हैं और जोड़ते हैं कि आप शायद दो हैंडलर का उपयोग कर बेहतर हैं। यदि, हालांकि, किसी कारण से आप एक से चिपकना चाहते हैं, तो Python logging cookbook में एक सेक्शन है जो आप करना चाहते हैं कम से कम वर्णन करना: कंसोल और फ़ाइल दोनों पर लॉगिंग करना, लेकिन विभिन्न स्तरों पर (यह आपको विभिन्न प्रारूपण करने का तरीका भी दिखाता है)। यह एक StreamHandler
बल्कि एक FileHandler
से साथ यह होता है, हालांकि:
import logging
# set up logging to file - see previous section for more details
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M',
filename='/temp/myapp.log',
filemode='w')
# define a Handler which writes INFO messages or higher to the sys.stderr
console = logging.StreamHandler()
console.setLevel(logging.INFO)
# set a format which is simpler for console use
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
# tell the handler to use this format
console.setFormatter(formatter)
# add the handler to the root logger
logging.getLogger('').addHandler(console)
# Now, we can log to the root logger, or any other logger. First the root...
logging.info('Jackdaws love my big sphinx of quartz.')
# Now, define a couple of other loggers which might represent areas in your
# application:
logger1 = logging.getLogger('myapp.area1')
logger2 = logging.getLogger('myapp.area2')
logger1.debug('Quick zephyrs blow, vexing daft Jim.')
logger1.info('How quickly daft jumping zebras vex.')
logger2.warning('Jail zesty vixen who grabbed pay from quack.')
logger2.error('The five boxing wizards jump quickly.')
संपादित करें: टिप्पणियाँ इस कोड को अभी भी दो संचालकों को बनाने वाला चर्चा की, लेकिन "खाल" basicConfig के उपयोग के माध्यम से एक निर्माण के रूप में() । मैं आपको दृढ़ता से दोनों को बनाने के लिए दृढ़ता से प्रोत्साहित करता हूं।
यह अभी भी दो हैंडलर है। केवल 'basicHonfig (...)' के साथ 'FileHandler' के निर्माण को "मुखौटा" किया गया है, मैं उन्हें स्पष्ट रूप से दोनों बनाऊंगा। – plundra
आप बिल्कुल सही हैं। हालांकि, मुझे लगता है कि यह (या इसी तरह) पूछताछकर्ता के मन में था जब उसने कहा था कि वह केवल दो लॉगर के साथ दो स्थानों पर आउटपुट कर रहा था। मुझे आपके साथ अपने अन्य बिंदु पर भी सहमत होना है: यह स्पष्ट रूप से आईएमओ दोनों हैंडलर घोषित करने के लिए बहुत स्पष्ट और साफ है। – bdeniker