Imprimir Stacktrace no log de Pyhton

Imprimir Stacktrace no log de Pyhton
Uma coleção de chamadas de abordagem em um determinado momento é representado em um Stacktrace. Quando um programa levanta uma exceção, o Python gera um Stacktrace, também conhecido como Traceback ou Backtrace. Há uma variedade de detalhes nessa pilha que pode ser explorada para localizar o problema. O pacote de log Python vem com vários recursos fundamentais e possui vários níveis de log, incluindo "Debug", "Info", "Aviso", "Erro" e "Crítico".

Exemplo 1: Imprimir Stacktrace em Python, utilizando o módulo Traceback

Neste exemplo, usaremos uma peça simples de código para demonstrar como implementar o módulo Traceback do Python para imprimir o rastreamento da pilha. Este pacote Trackback inclui um recurso popular para coletar, armazenar e exibir os traços de pilha de linguagens de computador. Ele duplica fielmente as operações de impressão de rastreamento de pilha de um script. Se você precisar ver o rastreamento da pilha, é essencial.

Em outras palavras, um rastreamento de pilha exibe cada operação que veio antes da que resultou no problema. A informação mais importante é sempre relatada na última linha de um rastreamento de pilha, que é quando a falha é identificada. Todas as chamadas de função no erro resultante podem ser usadas para localizar e resolver rapidamente o problema.

Vamos começar implementando o código pela importação da biblioteca Traceback Python. Então, na linha a seguir, criamos uma matriz e listamos os elementos com alguns valores. Os valores da lista de matrizes são "7", "8", "9" e "10". Existem quatro valores na lista de matrizes. Esta lista de matrizes foi salva na variável inicializada anteriormente "a".

Depois disso, utilizamos o termo "tente" e o valor "a = 6" na linha a seguir. Utilizamos os blocos de tentativa de exceção em Python para gerenciar as exceções. Esta abordagem é usada para escrever o script que pode levantar um erro no cabeçalho do bloco. Exceções são essencialmente erros, semelhantes aos erros de sintaxe. Durante a exceção de um programa, o manuseio de exceção é o ato único de responder à exceção. Voltando ao script, usamos "exceto" na próxima linha.

No bloco exceto, usamos “Traceback.print exc () ”, que é abreviado para“ Exceção de impressão ”. Usamos a função "print ()" dentro da caixa de exceção, que é "End Program End" para que esta declaração imprima quando a exceção surgir. Agora, se ocorrer uma exceção na caixa de tentativa, o programa se moverá imediatamente para os blocos, exceto os blocos e continua. Se uma exceção não ocorrer, o bloco de exceção será totalmente ignorado. Agora que a exceção acontece, podemos ver no código que o valor "6" foi inserido na caixa de tentativa, mesmo que não esteja na lista de matrizes. Como resultado, o código vai imediatamente para a caixa de exceção e imprime a instrução "Programa termina" na tela de saída.

As diferentes chamadas de função que compõem o traceback são encomendadas do mais recente ao menos recente, do fundo ao topo. Essas operações são todas representadas por declarações de duas linhas. Cada chamada começa com o nome do arquivo, número de sequência e nome do módulo, todos os quais indicam a localização do código. Depois disso, ele exibe a declaração de impressão de exceção "END" do programa ", já que o valor" 6 "não estava na lista declarada, o que resulta no" índice de lista fora do intervalo "Saída.

Exemplo 2: Imprima Stacktrace em Python, utilizando o registro.Método Exception ()

Neste exemplo, demonstraremos como usar o “logging do Python.Método da exceção () para produzir um Stacktrace. O pacote de registro no Python permite registrar os erros, além de registrar os erros e exceções. Os módulos de registro nos dão uma seleção de módulos de registro, incluindo "Debug", "Info", "Aviso", "Erro" e "Crítico". Estas são essencialmente camadas de módulos de madeira, para simplificar. Para registrar uma exceção com um erro no Python, use o “loging.exceção () ”função. Esta função adiciona um relatório com o status de erro a este logger. Acredita -se que os parâmetros sejam para depuração. As informações sobre a exceção estão anexadas ao relatório de registro. O único local a partir do qual invocar este procedimento deve ser o manipulador de exceção.

Agora, vamos olhar para o código. Primeiro, importamos duas bibliotecas - a primeira das quais está registrando e a segunda é Traceback. Em seguida, usamos o método "BasicConfig" com "log" e especificamos o nível como "Logging.Depurar". O único argumento que o método "getLogger ()" leva é "nome". Assim, nós o usamos ao usar o “registro.função getLogger ”. Se um nome for fornecido, uma referência a uma instância de logger com esse nome será gerada; Caso contrário, a raiz é devolvida. O mesmo objeto Logger é referenciado por muitas operações getLogger () com a mesma identidade.

Então, costumamos tentar e, como sabemos no bloco de tentativa, escrevemos o código que pode aumentar uma exceção. Nesse caso, usamos "MyFunction ()". Se a situação fornecida não corresponder, ocorre uma exceção. Então, o código salta imediatamente para o bloco, exceto. Neste blog de exceção, usamos o “registro.informação ”. Dentro dele, escrevemos a mensagem que queremos imprimir, que é “a exceção ocorreu”. Isso ocorre porque se uma exceção acontecer, um erro simplesmente ocorre, então ele exibe esta mensagem na tela. Mas se o erro não ocorrer, ignora toda a mensagem de exceção.

Também definimos o "exc info = true" com a mensagem. Todo o StackTrace será incluído no registro quando a informação exc for definida como true, semelhante ao que acontece com “Logger.exceção()". A única distinção é que você pode alternar rapidamente o nível de log de erro para outra coisa, apenas trocando o madeireiro.

Agora que uma exceção ocorreu no script, a primeira linha de saída é a mensagem "Exceção ocorreu" seguida pelo nível de registro que foi usado no script que é "informações.”O nome do madeireiro aparece como a raiz neste caso. Em seguida, a chamada de rastreamento aparece, exibindo os nomes do módulo, linha e arquivos. Finalmente, a mensagem de erro "MyFunction" não está definida.

Vamos falar sobre mais um código que utiliza o registro. O método Exception () começa importando a biblioteca para registro. Em seguida, duas variáveis ​​- "m" e "n" - são inicializadas e dadas os valores de "7" e "0", respectivamente. O bloco de tentativa agora é usado na etapa subsequente. Dentro dele, escrevemos o código que pode causar uma exceção. Primeiro, declaramos a variável "O". Então, definimos que "M" dividido por "n". Isso causa uma exceção porque o denominador é zero e não podemos dividir nenhum número por zero, o que significa que os erros surgirão. Como resultado, o código salta para o bloco exceto onde “registro.erro ”é usado. Erro é o nível de log. Se ocorrer uma exceção, imprimimos uma mensagem ou declaração que diz: "Exceção ocorreu" e definimos "exc info = true". Se não o definirmos como true, ele imprime apenas o bloco de exceção e não exibirá as informações de rastreamento.

Como escolhemos o nível de "erro" em nosso script, ele primeiro exibe a raiz como o nome do registrador, seguido pela mensagem "Exceção ocorreu". As informações de rastreamento que incluíam o nome do arquivo, o número da linha e o módulo são mostrados. A próxima linha mostra um aviso de erro, já que o denominador não pode ser zero. E como o denominador é zero neste código, o erro é referido como um erro de divisor zero.

Conclusão

Neste artigo, analisamos o processo de impressão de uma pilha em um log de Python, bem como como usar o módulo Traceback para criar um rastreamento de pilha. No primeiro exemplo, a biblioteca Traceback foi importada e a tentativa e exceto métodos foram usados. O código foi escrito na caixa de tentativa. Se ocorrer uma exceção, ele salta rapidamente para o bloco de exceção e exibe a declaração de exceção na tela. No segundo exemplo, utilizamos o registro que semelhante ao primeiro exemplo. O método Exception () usa os níveis de “informação” e “erro” da login. Se ocorrer uma exceção, ele exibe uma declaração de exceção.