Sto cercando di utilizzare RotatingHandler
per il nostro scopo di registrazione in Python. Ho mantenuto i file di backup come 500, il che significa che creerà un massimo di 500 file immagino e la dimensione che ho impostato è di 2000 byte (non sono sicuro qual è il limite di dimensioni consigliato).Come registrare tutto in un file usando RotatingFileHandler usando il file logging.conf?
Se eseguo il mio codice qui sotto, non registra tutto in un file. Voglio accedere tutto in un file -
#!/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)
Questo è ciò che viene stampato nel mio file 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
Non stampare INFO
, DEBUG
messaggio nel file in qualche modo .. Qualche idea sul perché non sta funzionando?
E inoltre, al momento, ho definito tutto in questo file python per scopi di registrazione. Voglio definire sopra le cose nel file logging conf
e leggerlo usando la funzione fileConfig()
. Non sono sicuro di come utilizzare l'esempio RotatingFileHandler
nel file logging.conf
?
UPDATE: -
Qui di seguito è il mio codice Python aggiornato che ho modificato per l'utilizzo con log.conf
di file -
#!/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)
E sotto è la mia 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
Ma ogni volta che lo compilo, questo è l'errore che ho ottenuto sulla mia console -
$ 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'
Qualche idea di cosa stia facendo?
Grazie .. Quindi, cosa ho intenzione di impostare per registrare tutto in un file? –
Ho aggiunto alcuni estratti da una configurazione di lavoro che uso in un progetto, questo dovrebbe iniziare. Un esempio completo con più logger può essere trovato https://github.com/gryphius/fuglu/blob/master/fuglu/conf/logging.conf.dist – Gryphius
Grazie a Gryphius per l'aiuto .. Un ultimo dubbio, quindi come sono andando a prendere il logger nel codice Python? qualche idea? Questa è la prima volta che lavoro con Python, quindi ho qualche problema. –