sexta-feira, agosto 06, 2010

Python Logging - Como implementar um sistema de log na sua aplicação

Tenho a necessidade de colocar um script para funcionar em um servidor público que não tenho acesso senão via browser/aplicação cedida pelo hospedeiro.
A forma que encontrei foi o de logar todas as ocorrências. Como Python tem o módulo logging resolvi procurar e encontrei um exemplo funcional. Em tempo, ele não fazia rotação de log, o que é importante para o arquivo não crescer demasiadamente segue a devida alteração.

Desculpe pela falta de syntaxhighlighting pq troquei o "desenho" do blog e o recurso acabou se perdendo.

#!/usr/bin/python

import logging
import logging.handlers

def configure_logger(log_file):
    """Accepts a fully-qualified filename to the log file.

    Returns a fully-configured logger object.
    """
    logger = logging.getLogger('ProgramName')
    log_formatter = logging.Formatter('%(created)-13s %(asctime)s Pid:%(process)s %(levelname)s %(message)s Thread:%(thread)s Thread Name:%(threadName)s Name:%(name)s File:%(filename)s Module: %(module)s Function Name:%(funcName)s')
    file_handler = logging.handlers.RotatingFileHandler(log_file, maxBytes=1024, backupCount=5)            
    #file_handler = logging.FileHandler(log_file)
    file_handler.setFormatter(log_formatter)
    logger.setLevel(logging.DEBUG)    
    logger.addHandler(file_handler)
    return logger

if __name__ == "__main__":
    LOG = configure_logger('logfile.txt')
    LOG.debug('This is debug level')
    LOG.info('This is info level')
    LOG.warning('This is warning level')
    LOG.error('This is error level')   
    LOG.critical('This is critical level')


fontes:
http://schof.org/2010/basic_python_logging/
http://schof.org/basic_python_logging.py

Nenhum comentário: