Introdução

Em projetos, sejam de grande ou pequena escala, é importante se ter registros e informações do que está acontecendo.

Digamos que você tenha um script em Python que busca dados em um banco de dados e preenche uma planilha automaticamente.

Script tal que executa esse trabalho em aproximadamente 1s.

Em um dia comum, nota-se que essa execução tem demorado bem mais que o comum, agora executando em 15s.

Mas poxa, o que está acontecendo?

Obviamente, vários fatores podem indicar essa queda na performance, mas para desconsiderarmos o óbvio, é importante se ter logs do que está acontecendo nesse script.

Por exemplo, o tempo de execução de todas as funções do script separadamente.

Por isso hoje, vamos aprender a como implementar de forma simples, logs em nossa aplicação.

Como funciona

import logging

def main() -> None:
    logging.basicConfig(
        level=logging.DEBUG,
        format="%(asctime)s %(levelname)s %(message)s",
        datefmt="%d-%m-%Y - %H:%M:%S",
        filename="basic.log",
    )

    logging.debug("> DEBUG Message")
    logging.info("> INFO Message")
    logging.warning("> WARNING Message")
    logging.error("> ERROR Message")
    logging.critical("> CRITICAL message")

if __name__ == "__main__":
    main()

O módulo logging é o padrão na linguagem Python.

A função .basicConfig define a configuração que será usada quando for chamada a biblioteca.

No .basicConfig definimos o level, format, datefmt e filename. Entre outros que não irei falar agora.

Level

Define o nível de logging que será registrado.

Os níveis são: DEBUG, INFO, WARNING, ERROR e CRITICAL.

Por exemplo, se quisermos registrar apenas erros e situações críticas, deve-se definir o level=ERROR. Pois, ele registra o nível indicado e o superior.

Se quiser ter registro de todos os tipos de situações, define-se o level=DEBUG. Assim, é registrado as mensagens de todos os níveis.

Format

Define o formato usado de registro da mensagem.

Exemplo de mensagem registrada utilizando-se o format="%(asctime)s %(levelname)s %(message)s".

29-08-2024 - 11:23:30 DEBUG > DEBUG Message

Primeiro date, em segundo o level e em terceiro o message.

Datefmt

Define o formato de data e hora usada no registros.

Filename

Caso queira registrar os logs em um arquivo separado, define-se o filename com o nome do mesmo.

Chamando o log

Para registrar o log, é simples.

logging.info("> Mensagem informativa de exemplo.")

Nome do módulo + o nível que se deseja.


Fim

Como eu havia dito, é bem simples e prático esse registro.

Fiquem com o exemplo de resultado do código acima.

29-08-2024 - 11:23:30 DEBUG > DEBUG Message
29-08-2024 - 11:23:30 INFO > INFO Message
29-08-2024 - 11:23:30 WARNING > WARNING Message
29-08-2024 - 11:23:30 ERROR > ERROR Message
29-08-2024 - 11:23:30 CRITICAL > CRITICAL message

Contatos: Linkedin . Instagram . Whatsapp . E-mail