Registrar mensagens no console no Django

Vaibhav Vaibhav 12 abril 2022
Registrar mensagens no console no Django

Quando instalamos um conjunto de software em nossa máquina, frequentemente encontramos um arquivo de log ou vemos algumas mensagens sendo impressas dentro do console desse aplicativo. Estas são mensagens de registro que fornecem informações sobre os eventos que ocorrem no aplicativo, tarefas que o software está concluindo, erros encontrados, avisos, etc. Essas mensagens ajudam os desenvolvedores de software a melhorar seu aplicativo e depurá-lo se os usuários permitirem que o aplicativo compartilhe os relatórios de erro.

Ao trabalhar com Django ou qualquer outra estrutura para um projeto, geralmente usamos instruções de impressão para depurar nossos aplicativos. As declarações impressas são excelentes; eles são integrados e fáceis de usar. Mas podemos levar isso para o próximo nível se começarmos a usar pacotes ou bibliotecas dedicadas a esse propósito. Essas bibliotecas nos permitem definir níveis para nossas mensagens de log e imprimir informações adicionais sem esforço, como números de linha e carimbos de data / hora. Algumas bibliotecas permitem até mesmo adicionar cores às nossas instruções de log ou mensagens.

Neste artigo, aprenderemos como registrar mensagens no console em projetos Django.

Mensagens de registro usando a biblioteca Python integrada logging

Python vem com uma biblioteca integrada logging, cujo único propósito é ajudar a implementar um sistema flexível de registro de eventos. Neste artigo, não abordaremos tudo, mas cobriremos apenas o básico e algumas coisas essenciais.

Ao trabalhar com logging, usamos um logger para registrar mensagens no console. Conforme mencionado acima, as mensagens de log têm alguns níveis que indicam a finalidade de uma mensagem de log. Esta biblioteca possui cinco desses níveis, e cada nível tem um número de antiguidade associado a ele. Por exemplo, o nível CRITICAL tem a antiguidade mais elevada de 50. DEBUG tem 10. INFO, WARNING e ERROR têm 20, 30 e 40, respetivamente.

  • DEBUG - usado para imprimir mensagens para depurar uma aplicação.
  • INFO - Utilizado para imprimir mensagens gerais como afirmações, confirmações e mensagens de sucesso.
  • WARNING - Usado para relatar avisos, eventos inesperados devido a entradas, indicações para alguns problemas que podem surgir no futuro, etc.
  • ERROR - Utilizado para alertar sobre problemas graves que muito provavelmente não impedirão a execução da aplicação.
  • CRÍTICO - Utilizado para alertar sobre problemas críticos que podem prejudicar os dados do usuário, expor os dados do usuário, prejudicar a segurança, interromper algum serviço ou talvez encerrar a própria aplicação.

A biblioteca logging tem funções que podemos usar para registrar mensagens. Para demonstrar, verifique o código abaixo:

import logging

logging.debug("Log message goes here.")
logging.info("Log message goes here.")
logging.warning("Log message goes here.")
logging.error("Log message goes here.")
logging.critical("Log message goes here.")

Por padrão, o logger não registra as mensagens de registro de nível debug e info. Para habilitá-los, temos que definir um nível para o logger. O código a seguir faz o mesmo:

import logging

logging.basicConfig(level=logging.NOTSET)  # Here
logging.debug("Log message goes here.")
logging.info("Log message goes here.")
logging.warning("Log message goes here.")
logging.error("Log message goes here.")
logging.critical("Log message goes here.")

Se o nível for definido para INFO, todos os níveis com número de antiguidade superior e igual ao de INFO serão apenas impressos. O programa a seguir descreve esse processo:

import logging

logging.basicConfig(level=logging.INFO)  # Here
logging.debug("Log message goes here.")
logging.info("Log message goes here.")
logging.warning("Log message goes here.")
logging.error("Log message goes here.")
logging.critical("Log message goes here.")

O método basicConfig() pode ser usado para definir o nível. No total, o parâmetro level pode aceitar seis valores.

  • logging.DEBUG # 10
  • logging.INFO # 20
  • logging.WARNING # 30
  • logging.ERROR # 40
  • logging.CRITICAL # 50
  • logging.NOTSET # 0

Existem mais parâmetros que você pode configurar; você pode ler mais sobre eles aqui.

Para aprender mais alguns, consulte esta lista:

  • filename - O método basicConfig() possui um parâmetro filename que pode ser usado para definir um nome de arquivo, ao qual todas as mensagens devem ser registradas. Quando um nome de arquivo é especificado, as mensagens de log são registradas neste arquivo em vez de no console.
  • filemode - O método basicConfig() tem um parâmetro filemode usado para definir o modo de abertura para o arquivo mencionado. Por padrão, é definido como "a", o que significa append. Portanto, sempre que você executar o programa, novas mensagens de log serão anexadas às mensagens antigas.
  • format - O método basicConfig() possui um parâmetro format que pode ser usado para formatar a estrutura das mensagens de log. O formato padrão, que se parece com este: <Level>:root:<Message>, será substituído pelo novo formato.

Se você quiser ler mais sobre esta biblioteca, consulte aqui.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.