29 de abr. de 2018

Como gerar log num arquivo e no console usando logging?

O jeito mais fácil de configurar a geração de log através do módulo logging (veja a documentação oficial) para diferentes destinos é usar a propriedade handlers do basicConfig:

import logging

# ...

logging.basicConfig(
  level=logging.INFO,
  format='%(asctime)s %(levelname)s - %(message)s',
  handlers=[
    logging.FileHandler(__file__.replace('.py', '.log')),
    logging.StreamHandler(sys.stdout)])

Um handler define o que será feito com a mensagem de log.

No exemplo acima, logging.FileHandler incluirá a mensagem num arquivo de log e logging.StreamHandler exibirá a mensagem no console. Neste exemplo, o arquivo gerado pelo logging.FileHandler terá o mesmo nome do arquivo Python que contem esse código.

Se precisar rotacionar o arquivo de log, experimente usar logging.RotatingFileHandler ou logging.TimedRotatingFileHandler.