Python 中借助日志記錄庫使用 Log4j的過程記錄
本文解釋了什么是 log4j,它是如何工作的,以及我們?yōu)槭裁匆褂盟?我們還將了解如何借助日志庫在 Python 編程語言中使用 log4j。
Log4j 概述及其使用重要性
log4j 是程序員在應(yīng)用程序中記錄數(shù)據(jù)時(shí)用來幫助他們的一款軟件。 而且,記錄數(shù)據(jù)意味著記錄在應(yīng)用程序中執(zhí)行的活動(dòng)或操作。
出于安全原因,我們可以使用 log4j,例如查看各種身份驗(yàn)證。 但是,它也可以用于記錄應(yīng)用程序中發(fā)生的事情以進(jìn)行調(diào)試。
或者大致了解應(yīng)用程序一直在做什么。 例如,log4j 是 Java 編程語言中的一個(gè)框架,它是一個(gè)半構(gòu)建應(yīng)用程序。
同樣,在 Python 中,我們使用了日志記錄模塊而不是 log4j。 日志記錄是將應(yīng)用程序操作和狀態(tài)記錄到輔助接口的過程。 換句話說,將您的程序操作寫入一個(gè)文件,但是您如何開始記錄呢?
那么,您需要熟悉日志記錄級(jí)別。 每個(gè)日志庫都允許您在特定級(jí)別鎖定信息。 您必須了解五個(gè)主要的日志記錄級(jí)別。
級(jí)別 | 說明 |
---|---|
debug | 調(diào)試級(jí)別用于開發(fā)過程或錯(cuò)誤修復(fù)和故障排除。 所有特定于開發(fā)人員的信息都在這一層之下。 |
info | 信息級(jí)別用于記錄程序的任何重要默認(rèn)操作,例如默認(rèn)用戶或系統(tǒng)查看操作。 |
warning | 警告級(jí)別用于記錄從長(zhǎng)遠(yuǎn)來看可能成為錯(cuò)誤的事件。 此日志記錄級(jí)別應(yīng)該可以幫助您追蹤錯(cuò)誤。 |
error | 錯(cuò)誤級(jí)別用于記錄錯(cuò)誤,錯(cuò)誤是會(huì)以某種錯(cuò)誤方式影響程序執(zhí)行的錯(cuò)誤。 |
critical | 臨界級(jí)別為世界末日; 該程序已死或已嚴(yán)重?fù)p壞。 |
在 Python 中的日志記錄庫的幫助下使用 Log4j
現(xiàn)在我們只是運(yùn)行一個(gè)簡(jiǎn)單的基本代碼,并沒有這樣的邏輯,但我們想向您展示一些理解,比如如何將所有日志寫入一個(gè)文件。
讓我們進(jìn)入代碼,首先配置日志系統(tǒng),調(diào)用 basicConfig()
方法,并使用 filename 參數(shù)傳入文件名。 Python 會(huì)將所有日志消息寫入此文件; 如果它不存在,Python 將創(chuàng)建它。
后面的參數(shù)是filemode,意思是file mode就是說是append mode到write mode還是隨便你放什么,默認(rèn)情況下,文件會(huì)以append mode創(chuàng)建。 接下來是表示asctime、levelname、message等很多信息的格式。
asctime 基本上顯示了它在這個(gè)與日志相關(guān)的特定文本文件中打印的時(shí)間類型。 第二個(gè)參數(shù)值是一個(gè)叫做levelname的東西; 這個(gè)參數(shù)告訴我們?cè)趫?zhí)行過程中發(fā)生了什么樣的錯(cuò)誤。
該消息是我們?cè)噲D在該日志消息中打印的所有消息。 我們正在使用 datefmt; 此參數(shù)將按特定順序打印時(shí)間。
basicConfig()
函數(shù)有一個(gè)不同的屬性,我們可以從這里閱讀所有屬性。
import logging logging.basicConfig(filename='demo.txt', filemode='a', format='%(asctime)s %(levelname)s-%(message)s', datefmt='%Y-%m-%d %H:%M:%S') Now we have written a simple logic where we compare the percentile with some numbers and append some logs inside the text file. for i in range(0,15): if i%2==0: logging.error('Log error message') elif i%3==0: logging.warning('Log warning message') elif i%5==0: logging.debug('Log debug message') elif i%7==0: logging.critical('Log critical message') else: logging.info('Log info message')
輸出:
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 WARNING-Log warning message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 CRITICAL-Log critical message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 WARNING-Log warning message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
運(yùn)行程序后,我們可以注意到文本文件中沒有添加信息和調(diào)試日志,因?yàn)槟J(rèn)情況下,levelname 調(diào)用錯(cuò)誤,錯(cuò)誤級(jí)別不顯示信息和調(diào)試。
但是,我們可以通過在傳遞 logging.DEBUG 時(shí)使用 level 參數(shù)來使用其他級(jí)別。
level=logging.DEBUG
現(xiàn)在,如果我們運(yùn)行并打開 demo.txt 文件,我們將看到所有日志消息,但如果我們將日志級(jí)別更新為 logging.ERROR,我們將看到錯(cuò)誤和關(guān)鍵消息。
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 WARNING-Log warning message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 DEBUG-Log debug message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 CRITICAL-Log critical message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 WARNING-Log warning message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
讓我們來看一個(gè)常見的問題,我們要將任何數(shù)字除以零。 要確定此操作,我們將使用 try 塊。
如果操作失敗,我們將進(jìn)入 except 塊并顯示日志錯(cuò)誤。
try: 1/0 except: logging.error('Log zero division error occurs')
輸出:
2022-09-02 00:29:48 ERROR-Log zero division error occurs
它是項(xiàng)目的重要組成部分,因?yàn)闊o論何時(shí)處理項(xiàng)目,您都可能必須編寫這種日志記錄機(jī)制。
完整的 Python 代碼:
import logging logging.basicConfig(filename='demo.txt', filemode='w', format='%(asctime)s %(levelname)s-%(message)s', datefmt='%Y-%m-%d %H:%M:%S', level=logging.DEBUG) # for i in range(0,15): # if i%2==0: # logging.error('Log error message') # elif i%3==0: # logging.warning('Log warning message') # elif i%5==0: # logging.debug('Log debug message') # elif i%7==0: # logging.critical('Log critical message') # else: # logging.info('Log info message') try: 1/0 except: logging.error('Log zero division error occurs')
到此這篇關(guān)于在 Python 中借助日志記錄庫使用 Log4j的文章就介紹到這了,更多相關(guān)Python日志記錄庫使用 Log4j內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
tensorflow之自定義神經(jīng)網(wǎng)絡(luò)層實(shí)例
今天小編就為大家分享一篇tensorflow之自定義神經(jīng)網(wǎng)絡(luò)層實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02網(wǎng)易有道2017內(nèi)推編程題 洗牌(python)
這篇文章主要為大家詳細(xì)介紹了網(wǎng)易有道2017內(nèi)推編程題:洗牌,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06關(guān)于Pytorch的MNIST數(shù)據(jù)集的預(yù)處理詳解
今天小編就為大家分享一篇關(guān)于Pytorch的MNIST數(shù)據(jù)集的預(yù)處理詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01python使用循環(huán)打印所有三位數(shù)水仙花數(shù)的實(shí)例
今天小編就為大家分享一篇python使用循環(huán)打印所有三位數(shù)水仙花數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11Alpine安裝Python3依賴出現(xiàn)的問題及解決方法
這篇文章主要介紹了Alpine安裝Python3依賴出現(xiàn)的問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12python文件操作相關(guān)知識(shí)點(diǎn)總結(jié)整理
這篇文章主要介紹了python文件操作相關(guān)知識(shí)點(diǎn),整理匯總了Python文件操作所涉及的常見函數(shù)與方法,并給出了實(shí)例代碼予以總結(jié)歸納,需要的朋友可以參考下2016-02-02python3使用logging包,如何把日志寫到系統(tǒng)的rsyslog中
這篇文章主要介紹了python3使用logging包,如何把日志寫到系統(tǒng)的rsyslog中的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09