Stampa Stacktrace in Pyhton Log

Stampa Stacktrace In Pyhton Log



Una raccolta di chiamate di approccio in un particolare momento è rappresentata in uno stacktrace. Quando un programma solleva un'eccezione, Python genera uno stacktrace, noto anche come traceback o backtrace. C'è una varietà di dettagli in questo stacktrace che possono essere sfruttati per individuare il problema. Il pacchetto di registrazione Python viene fornito con diverse funzionalità fondamentali e ha più livelli di registrazione tra cui 'debug', 'info', 'avviso', 'errore' e 'critico'.

Esempio 1: stampa Stacktrace in Python utilizzando il modulo Traceback

In questo esempio, useremo un semplice pezzo di codice per dimostrare come implementare il modulo traceback di Python per stampare la traccia dello stack. Questo pacchetto di trackback include una funzionalità molto apprezzata per la raccolta, l'archiviazione e la visualizzazione delle tracce dello stack dai linguaggi informatici. Duplica fedelmente le operazioni di stampa della traccia dello stack di uno script. Se hai mai bisogno di visualizzare la traccia dello stack, è essenziale.

In altre parole, un'analisi dello stack visualizza ogni operazione precedente a quella che ha provocato il problema. Le informazioni più importanti vengono sempre riportate sull'ultima riga di una traccia dello stack, ovvero quando viene identificato l'errore. Tutte le chiamate di funzione nell'errore risultante possono essere utilizzate per individuare e risolvere rapidamente il problema.







Iniziamo implementando il codice importando la libreria Python traceback. Quindi, nella riga seguente, creiamo un array ed elenchiamo gli elementi con alcuni valori. I valori dell'elenco di array sono '7', '8', '9' e '10'. Ci sono quattro valori nell'elenco dell'array. Questo elenco di array è stato salvato nella variabile 'A' precedentemente inizializzata.



Successivamente, utilizziamo il termine 'prova' e il valore 'A=6' nella riga seguente. Utilizziamo i blocchi try-except in Python per gestire le eccezioni. Questo approccio viene utilizzato per scrivere lo script che potrebbe generare un errore nell'intestazione del blocco. Le eccezioni sono essenzialmente errori, simili agli errori di sintassi. Durante un'eccezione di un programma, la gestione delle eccezioni è l'unico atto di rispondere all'eccezione. Tornando allo script, usiamo 'except' nella riga successiva.



Nel bloccoexcept, usiamo 'traceback.print exc()' che è l'abbreviazione di 'printing exception'. Usiamo la funzione 'print ()' all'interno della casella dell'eccezione che è 'fine programma' in modo che questa istruzione venga stampata quando si verifica l'eccezione. Ora, se si verifica un'eccezione nella casella di prova, il programma passa immediatamente ai blocchi di eccezione e continua. Se non si verifica un'eccezione, il blocco dell'eccezione viene completamente saltato. Ora che si verifica l'eccezione, possiamo vedere nel codice che il valore '6' è stato inserito nella casella try anche se non è nell'elenco dell'array. Di conseguenza, il codice passa immediatamente alla casella delle eccezioni e stampa l'istruzione 'fine programma' nella visualizzazione dell'output.





Le diverse chiamate di funzione che compongono il traceback sono ordinate dalla più recente alla meno recente, dal basso verso l'alto. Queste operazioni sono tutte rappresentate da dichiarazioni a due righe. Ogni chiamata inizia con il nome del file, il numero di sequenza e il nome del modulo, che indicano tutti la posizione del codice. Successivamente, visualizza l'istruzione di stampa dell'eccezione 'fine programma' poiché il valore '6' non era nell'elenco dichiarato, il che risulta nell'output 'indice elenco fuori intervallo'.



Esempio 2: Stampa Stacktrace in Python utilizzando il metodo Logging.Exception()

In questo esempio, dimostreremo come utilizzare il metodo 'logging.exception()' di Python per produrre uno stacktrace. Il pacchetto di registrazione in Python ci consente di registrare gli errori e di registrare gli errori e le eccezioni. I moduli di registrazione ci offrono una selezione di moduli di registrazione tra cui 'debug', 'informazioni', 'avviso', 'errore' e 'critico'. Questi sono essenzialmente strati di moduli di registrazione, per dirla semplicemente. Per registrare un'eccezione con un errore in Python, utilizzare la funzione 'logging.exception()'. Questa funzione aggiunge un report con lo stato ERROR a questo logger. Si ritiene che i parametri siano per il debug. Le informazioni sull'eccezione sono allegate al rapporto di registrazione. L'unica posizione da cui richiamare questa procedura dovrebbe essere i gestori di eccezioni.

Ora, diamo un'occhiata al codice. Innanzitutto, importiamo due librerie, la prima delle quali è il logging e la seconda è il traceback. Quindi, usiamo il metodo 'basicConfig' con 'logging' e specifichiamo il livello come 'logging.Debug'. L'unico argomento accettato dal metodo 'getLogger()' è 'nome'. Pertanto, lo usiamo quando utilizziamo la funzione 'logging.getlogger'. Se viene dato un nome, viene generato un riferimento a un'istanza di logger con quel nome; in caso contrario, viene restituita la radice. Lo stesso oggetto logger viene referenziato da molte operazioni getLogger() con la stessa identità.

Quindi, usiamo to try e, come sappiamo nel blocco try, scriviamo il codice che potrebbe sollevare un'eccezione. In questo caso, usiamo 'myfunction()'. Se la situazione data non corrisponde, si verifica un'eccezione. Quindi, il codice salta immediatamente al bloccoexcept. In questo blog di eccezione, usiamo 'logging.info'. Al suo interno scriviamo il messaggio che vogliamo stampare che è “è avvenuta l'eccezione”. Questo perché se si verifica un'eccezione, si verifica semplicemente un errore, quindi viene visualizzato questo messaggio sullo schermo. Ma se l'errore non si verifica, ignora l'intero messaggio di eccezione.

Impostiamo anche 'exc info=True' con il messaggio. L'intero stacktrace verrà incluso nel logging quando exc info è impostato su True, in modo simile a quanto accade con 'logger.exception()'. L'unica distinzione è che puoi cambiare rapidamente il livello di registro da errore a qualcos'altro semplicemente sostituendo il logger.

Ora che si è verificata un'eccezione nello script, la prima riga di output è il messaggio 'l'eccezione ha avuto luogo' seguito dal livello di registrazione utilizzato nello script che è 'info'. Il nome del logger appare come root in questo caso. Quindi, viene visualizzata la chiamata traceback, che mostra i nomi del modulo, della riga e del file. Infine, il messaggio di errore 'myfunction' non è definito.

Parliamo di altro codice che fa uso della registrazione. Il metodo exception() inizia importando la libreria per la registrazione. Successivamente, due variabili - 'm' e 'n' - vengono inizializzate e ricevono rispettivamente i valori di '7' e '0'. Il blocco try viene ora utilizzato nella fase successiva. Al suo interno, scriviamo il codice che potrebbe causare un'eccezione. Innanzitutto, dichiariamo la variabile 'o'. Quindi, impostiamo quella 'm' divisa per 'n'. Ciò causa un'eccezione perché il denominatore è zero e non possiamo dividere alcun numero per zero, il che significa che si verificheranno errori. Di conseguenza, il codice passa al blocco di eccezione in cui viene utilizzato 'logging.error'. L'errore è il livello di registrazione. Se si verifica un'eccezione, stampiamo un messaggio o una dichiarazione che dice 'si è verificata un'eccezione' e impostiamo 'exc info=true'. Se non lo impostiamo su true, stampa solo il blocco delle eccezioni e non visualizza le informazioni di traceback.

Poiché abbiamo scelto il livello 'ERRORE' nel nostro script, mostra prima la radice come nome del logger, seguita dal messaggio 'si è verificata un'eccezione'. Vengono quindi mostrate le informazioni di traceback che includevano il nome del file, il numero di riga e il modulo. La riga successiva mostra quindi un avviso di errore poiché il denominatore non può essere zero. E poiché il denominatore è zero in questo codice, l'errore viene definito errore di divisore zero.

Conclusione

In questo articolo, abbiamo esaminato il processo di stampa di uno stacktrace in un registro Python e come utilizzare il modulo traceback per creare una traccia dello stack. Nel primo esempio, è stata importata la libreria traceback e sono stati utilizzati i metodi try edexcept. Il codice è stato scritto nella casella try. Se si verifica un'eccezione, passa rapidamente al blocco delle eccezioni e visualizza l'istruzione dell'eccezione sullo schermo. Nel secondo esempio, abbiamo utilizzato la registrazione che è simile al primo esempio. Il metodo exception() utilizza i livelli di registrazione 'info' ed 'errore'. Se si verifica un'eccezione, visualizza un'istruzione di eccezione.