Curso web2py

Logging

Para manter um log da nossa aplicação no web2py utilizaremos o módulo de logging da própria linguagem Python. Portanto, é possível encontrar mais detalhes na documentação do módulo.

Configurando o Logging

O logging pode ser configurado a partir de um arquivo logging.conf, na raíz da pasta descompactada do web2py. Esse arquivo deve ser criado com as configurações de logging desejadas pelo usuário e, para isso, é prático utilizar o arquivo /examples/logging.example.com como base.

Por isso, copie o arquivo logging.example.com para a pasta raíz e altere seu nome para logging.conf.

Passo-a-Passo

  1. Insira o nome da sua aplicação na lista de loggers do arquivo.
    [loggers]
    keys = root,rocket,markdown,web2py,rewrite,cron,app,welcome,**seu_app**
    
  2. Crie um handler específico para sua aplicação. Você pode fazer isso de forma fácil copiando o handler da aplicação Welcome e editando com os dados da sua aplicação.
    # **seu_app** app handler
    [**logger_seu_app**]
    level=WARNING
    qualname=web2py.app.**seu_app**
    handlers=consoleHandler
    propagate=0
    
  3. qualname: identificador da aplicação
  4. handlers: os handlers que poderão ser utilizados para realizar o log, podendo ser mais de um simultaneamente. consoleHandler: notifica o log no terminal/prompt; messageBoxHandler: abre um message box no sistema operacional; rotatingFileHandler: cria arquivos de log rotativos, criando novos sempre que completa os anteriores;

Você pode criar novos handlers da maneira como especificada na documentação do módulo. Para utilizá-los é preciso especificar o nome dos handlers na lista de handlers do web2py.

[handlers]
keys=consoleHandler,messageBoxHandler,rotatingFileHandler,criadoPorVoceHandler
  1. Os handlers utilizados por você devem ser configurados no seu campo específico. Configure o consoleHandler.

    [handler_consoleHandler]
    class=StreamHandler
    level=DEBUG
    formatter=simpleFormatter
    args=(sys.stdout,)
    

    O ideal é que o handler esteja em level WARNING em produção e DEBUG em desenvolvimento.

  2. Agora, em um dos models da sua aplicação, importe o módulo logging e crie uma instância de logger informando o qualname do seu handler.

    import logging
    logger = logging.getLogger("web2py.app.seu_app")
    logger.setLevel(logging.DEBUG)
    

    É possível que o level no handler seja redefinido, utilizando o setLevel.

  3. Utilize o logging na sua aplicação.

    def index():
     logger.debug("Rodando a página index.")
     logger.info("Esse é um logger com level info.")
     return dict()
    

    As mensagens acima serão exibidas no console do seu sistema operacional ao executar a função index utilizando os levels especificados.