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
# 10logging.INFO
# 20logging.WARNING
# 30logging.ERROR
# 40logging.CRITICAL
# 50logging.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étodobasicConfig()
possui um parâmetrofilename
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étodobasicConfig()
tem um parâmetrofilemode
usado para definir o modo de abertura para o arquivo mencionado. Por padrão, é definido como"a"
, o que significaappend
. Portanto, sempre que você executar o programa, novas mensagens de log serão anexadas às mensagens antigas.format
- O métodobasicConfig()
possui um parâmetroformat
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.