2013-11-22 13 views
12

मैं अजगर में हमारे प्रवेश प्रयोजन के लिए RotatingHandler उपयोग करने के लिए कोशिश कर रहा हूँ। मैंने बैकअप फ़ाइलों को 500 के रूप में रखा है जिसका मतलब है कि यह अधिकतम 500 फाइलें बनाएगा जो मुझे लगता है और मैंने जो आकार सेट किया है वह 2000 बाइट्स है (सुनिश्चित नहीं है कि अनुशंसित आकार सीमा क्या है)।logging.conf फ़ाइल का उपयोग कर RotatingFileHandler का उपयोग कर फ़ाइल में सबकुछ लॉग कैसे करें?

अगर मैं अपने नीचे दिए गए कोड को चलाने, यह एक फ़ाइल में सब कुछ लॉग नहीं। मैं एक फ़ाइल में सब कुछ प्रवेश करना चाहते हैं -

#!/usr/bin/python 

import logging 
import logging.handlers 

LOG_FILENAME = 'testing.log' 

# Set up a specific logger with our desired output level 
my_logger = logging.getLogger('agentlogger') 

# Add the log message handler to the logger 
handler = logging.handlers.RotatingFileHandler(LOG_FILENAME, maxBytes=2000, backupCount=100) 

# create a logging format 
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 
handler.setFormatter(formatter) 

my_logger.addHandler(handler) 

my_logger.debug('debug message') 
my_logger.info('info message') 
my_logger.warn('warn message') 
my_logger.error('error message') 
my_logger.critical('critical message') 

# Log some messages 
for i in range(10): 
    my_logger.error('i = %d' % i) 

यह वही मेरी testing.log फ़ाइल में मुद्रित हो जाता है -

2013-11-22 12:59:34,782 - agentlogger - WARNING - warn message 
2013-11-22 12:59:34,782 - agentlogger - ERROR - error message 
2013-11-22 12:59:34,782 - agentlogger - CRITICAL - critical message 
2013-11-22 12:59:34,782 - agentlogger - ERROR - i = 0 
2013-11-22 12:59:34,782 - agentlogger - ERROR - i = 1 
2013-11-22 12:59:34,783 - agentlogger - ERROR - i = 2 
2013-11-22 12:59:34,783 - agentlogger - ERROR - i = 3 
2013-11-22 12:59:34,783 - agentlogger - ERROR - i = 4 
2013-11-22 12:59:34,783 - agentlogger - ERROR - i = 5 
2013-11-22 12:59:34,783 - agentlogger - ERROR - i = 6 
2013-11-22 12:59:34,784 - agentlogger - ERROR - i = 7 
2013-11-22 12:59:34,784 - agentlogger - ERROR - i = 8 
2013-11-22 12:59:34,784 - agentlogger - ERROR - i = 9 

यह पता INFO मुद्रित नहीं करता है, फाइल में DEBUG संदेश किसी भी तरह .. कोई विचार क्यों यह काम नहीं कर रहा है?

और यह भी, लॉगिंग उद्देश्य के लिए इस अजगर फ़ाइल में अभी, मैं परिभाषित किया है सब कुछ। मैं logging conf फ़ाइल में उपरोक्त चीजों को परिभाषित करना चाहता हूं और fileConfig() फ़ंक्शन का उपयोग करके इसे पढ़ना चाहता हूं। मुझे यकीन नहीं है कि logging.conf फ़ाइल में RotatingFileHandler उदाहरण का उपयोग कैसे करें?

अद्यतन: -

नीचे है मेरी अद्यतन अजगर कोड है कि मैं log.conf फ़ाइल के साथ उपयोग करने के लिए संशोधित किया है -

#!/usr/bin/python 

import logging 
import logging.handlers 

my_logger = logging.getLogger(' ') 
my_logger.config.fileConfig('log.conf') 

my_logger.debug('debug message') 
my_logger.info('info message') 
my_logger.warn('warn message') 
my_logger.error('error message') 
my_logger.critical('critical message') 

# Log some messages 
for i in range(10): 
    my_logger.error('i = %d' % i) 

और नीचे है मेरी log.conf file -

[loggers] 
keys=root 

[handlers] 
keys=logfile 

[formatters] 
keys=logfileformatter 

[logger_root] 
level=DEBUG 
handlers=logfile 

[logger_zkagentlogger] 
level=DEBUG 
handlers=logfile 
qualname=zkagentlogger 
propagate=0 

[formatter_logfileformatter] 
format=%(asctime)s %(name)-12s: %(levelname)s %(message)s 

[handler_logfile] 
class=handlers.RotatingFileHandler 
level=NOTSET 
args=('testing.log',2000,100) 
formatter=logfileformatter 

लेकिन जब भी मैं इसे संकलित करता हूं, यह मेरी कंसोल पर मिली त्रुटि है -

$ python logtest3.py 
Traceback (most recent call last): 
    File "logtest3.py", line 6, in <module> 
    my_logger.config.fileConfig('log.conf') 
AttributeError: 'Logger' object has no attribute 'config' 

किसी भी विचार क्या गलत मैं यहाँ कर रहा हूँ?

उत्तर

5

It doesn't print out INFO, DEBUG message into the file somehow.. Any thoughts why it is not working out?

आप एक LogLevel स्थापित करने के लिए नहीं है, इसलिए डिफ़ॉल्ट (चेतावनी)

प्रयोग किया जाता है http://docs.python.org/2/library/logging.html से:

Note that the root logger is created with level WARNING.

अपने दूसरे प्रश्न के लिए के रूप में

, कुछ इस तरह करना चाहिए चाल (मैंने इसका परीक्षण नहीं किया है, बस मेरी कॉन्फ़िगरेशन से अनुकूलित है जो TimedRotatingFileHandler का उपयोग कर रहा है):

[loggers] 
keys=root 

[handlers] 
keys=logfile 

[formatters] 
keys=logfileformatter 

[logger_root] 
level=DEBUG 
handlers=logfile 

[formatter_logfileformatter] 
format=%(asctime)s %(name)-12s: %(levelname)s %(message)s 

[handler_logfile] 
class=handlers.RotatingFileHandler 
level=NOTSET 
args=('testing.log','a',2000,100) 
formatter=logfileformatter 
+0

धन्यवाद .. तो मुझे फ़ाइल में सब कुछ लॉग इन करने के लिए सेट करने के लिए क्या suppsoed है? –

+0

मैंने एक प्रोजेक्ट में उपयोग की जाने वाली एक कार्यकारी कॉन्फ़िगरेशन से कुछ अंश जोड़े हैं, यह आपको प्रारंभ करना चाहिए। अधिक लॉगर्स के साथ एक पूर्ण उदाहरण https://github.com/gryphius/fuglu/blob/master/fuglu/conf/logging.conf.dist – Gryphius

+0

सहायता के लिए धन्यवाद ग्रिफियस पाया जा सकता है .. एक आखिरी संदेह, तो मैं कैसे हूं पायथन कोड में लॉगर पाने जा रहा है? कोई विचार? यह पहली बार है कि मैं पाइथन के साथ काम कर रहा हूं इसलिए कुछ समस्या है। –

3

मुझे पता है, यह बहुत देर हो चुकी है, लेकिन मुझे अभी भी एक ही त्रुटि मिली है, और खोज करते समय मुझे आपकी समस्या है। मैं अपने समस्या को हल करने में सक्षम हूँ, और मैंने सोचा कि यह भी कुछ अन्य उपयोगकर्ता के लिए उपयोगी हो सकता है:

आप एक लकड़हारा वस्तु बनाया है और my_logger.config.fileConfig पहुंचने का प्रयास कर ('log.conf') जो आप logger.config.fileConfig ('log.conf') का उपयोग करना चाहिए के रूप में मैं नीचे उल्लेख और लॉगिंग आयात करने की आवश्यकता गलत है।config रूप में अच्छी तरह:

#!/usr/bin/python 

import logging 
import logging.handlers 
import logging.config 

logging.config.fileConfig('log.config',disable_existing_loggers=0) 
my_logger = logging.getLogger('you logger name as you mention in your conf file') 

my_logger.debug('debug message') 
my_logger.info('info message') 
my_logger.warn('warn message') 
my_logger.error('error message') 
my_logger.critical('critical message') 

इन परिवर्तनों को करने के बाद, AttributeError: 'लॉगर' ऑब्जेक्ट कोई विशेषता 'config' त्रुटि चला जाना चाहिए है।

संबंधित मुद्दे