मैंने लॉगिंग मॉड्यूल प्रलेखन के माध्यम से पढ़ा है और जब तक मुझे कुछ स्पष्ट याद आ गया हो, तो मुझे जो कोड मिला है वह इरादे के रूप में काम नहीं कर रहा है। मैं पायथन 2.6.4 का उपयोग कर रहा हूँ।पाइथन एकाधिक फाइलों पर लॉगिंग
मेरे कार्यक्रम में कई अलग-अलग पायथन फाइलें हैं, जिनमें से मैं एक टेक्स्ट फ़ाइल में लॉगिंग संदेश भेजना चाहता हूं, और संभावित रूप से, स्क्रीन। मुझे कल्पना है कि ऐसा करने के लिए यह एक आम बात है इसलिए मैं इसे कहीं गड़बड़ कर रहा हूं।
मिनट में मेरा कोड क्या कर रहा है पाठ फ़ाइल में सही ढंग से लॉगिंग कर रहा है, थोड़े। लेकिन स्क्रीन पर लॉगिंग को डुप्लिकेट किया जा रहा है, एक निर्दिष्ट प्रारूपण के साथ, और बिना किसी के। साथ ही, जब मैं स्क्रीन आउटपुट बंद करता हूं, तब भी मुझे एक बार मुद्रित पाठ मिल रहा है, जिसे मैं नहीं चाहता - मैं बस इसे फ़ाइल में लॉग इन करना चाहता हूं।
वैसे भी, कुछ कोड: वहाँ
#logger.py
import logging
from logging.handlers import RotatingFileHandler
import os
def setup_logging(logdir=None, scrnlog=True, txtlog=True, loglevel=logging.DEBUG):
logdir = os.path.abspath(logdir)
if not os.path.exists(logdir):
os.mkdir(logdir)
log = logging.getLogger('stumbler')
log.setLevel(loglevel)
log_formatter = logging.Formatter("%(asctime)s - %(levelname)s :: %(message)s")
if txtlog:
txt_handler = RotatingFileHandler(os.path.join(logdir, "Stumbler.log"), backupCount=5)
txt_handler.doRollover()
txt_handler.setFormatter(log_formatter)
log.addHandler(txt_handler)
log.info("Logger initialised.")
if scrnlog:
console_handler = logging.StreamHandler()
console_handler.setFormatter(log_formatter)
log.addHandler(console_handler)
कुछ भी नहीं असामान्य।
2010-01-08 22:57:07,587 - DEBUG :: SCANZIP: Checking zip contents, file: testscandir/testdir1/music.mp3
DEBUG:stumbler.core:SCANZIP: Checking zip contents, file: testscandir/testdir1/music.mp3
2010-01-08 22:57:07,587 - DEBUG :: SCANZIP: Checking zip contents, file: testscandir/testdir2/subdir/executable.exe
DEBUG:stumbler.core:SCANZIP: Checking zip contents, file: testscandir/testdir2/subdir/executable.exe
हालांकि textfile सही ढंग से स्वरूपित उत्पादन हो रहा है, logger.py में स्क्रीन प्रवेश बंद करने से अभी भी प्रदर्शित प्रारूप गलत आउटपुट है:
#core.py
import logging
corelog = logging.getLogger('stumbler.core') # From what I understand of the docs, this should work :/
class Stumbler:
[...]
corelog.debug("Messages and rainbows...")
स्क्रीन उत्पादन यह कैसे दोहराया जा रहा है पता चलता ।
जो मैं दस्तावेज़ों को समझता हूं, कोरलॉग.डेबग() को कॉल करने से, कोरलॉग के रूप में देखकर "स्टंबलर" लॉगर का बच्चा होता है, इसे उस स्वरूपण का उपयोग करना चाहिए और लॉग को आउटपुट करना चाहिए।
इस तरह के एक मामूली मुद्दे पर निबंध के लिए माफ़ी।
टीएल; डीआर: मैं एकाधिक फाइलों से लॉगिंग कैसे करूं?
वाह , सटीक। मैं लॉगिंग कर रहा था। BasicConfig() अभी भी मेरे कुछ अन्य मॉड्यूल में इस्तेमाल किया जा रहा है। यह मेरे लिए कभी नहीं हुआ कि वे समस्याएं पैदा कर सकते हैं। धन्यवाद! – Loix0