Python中關(guān)于logging模塊的學習筆記
python的logging模塊
python提供了一個日志處理的模塊,那就是logging。
導入logging模塊使用以下命令:
import logging
logging模塊的用法:
1.簡單的將日志打印到屏幕上
import logging
logging.debug("This is debug message")
logging.info("This is info message")
logging.warning("This is warning message")
logging.error("This is error message")
logging.critical("This is critical message")
會在屏幕上顯示出以下內(nèi)容:
WARNING:root:This is warning message
ERROR:root:This is error message
CRITICAL:root:This is critical message
默認情況下python的logging模塊將日志打印到了標準輸出中,也就是屏幕上,且只顯示了大于等于WARNING級別的日志.
這說明默認的日志級別設置為WARNING(日志級別等級CRITICAL > ERROR > WARNING > INFO > DEBUG)
默認直接輸出的日志格式為日志級別:Logger名稱:用戶:輸出消息。
2.現(xiàn)在修改日志的默認輸出級別為debug,重新設定輸出時間的格式,
import logging
logging.basicConfig(level=logging.DEBUG,
format="%(asctime)s %(levelname)s %(message)s",
datefmt="%Y-%m-%d %H:%M:%S")
logging.debug("This is debug message")
logging.info("This is info message")
logging.warning("This is warning message")
logging.error("This is error message")
logging.critical("This is critical message")
會在屏幕上顯示以下信息;
2017-07-02 10:41:18 DEBUG This is debug message
2017-07-02 10:41:18 INFO This is info message
2017-07-02 10:41:18 WARNING This is warning message
2017-07-02 10:41:18 ERROR This is error message
2017-07-02 10:41:18 CRITICAL This is critical message
3.現(xiàn)在想把程序產(chǎn)生的日志寫入文件當中,可以這樣設定:
import logging
logging.basicConfig(level=logging.DEBUG,
format="%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
filename="log.txt",
filemode="w")
logging.debug("This is debug message")
logging.info("This is info message")
logging.warning("This is warning message")
logging.error("This is error message")
logging.critical("This is critical message")
運行程序,會在腳本目錄下生成一個名為log.txt的文件。
log.txt文件的內(nèi)容如下:
2017-07-02 10:49:13 logging_modules.py[line:211] DEBUG This is debug message
2017-07-02 10:49:13 logging_modules.py[line:212] INFO This is info message
2017-07-02 10:49:13 logging_modules.py[line:213] WARNING This is warning message
2017-07-02 10:49:13 logging_modules.py[line:214] ERROR This is error message
2017-07-02 10:49:13 logging_modules.py[line:215] CRITICAL This is critical message
在這里設定日志文件的輸出使用的是basicConfig這個方法:
logging.basicConfig函數(shù)各參數(shù): filename: 指定輸出日志的文件名 filemode: 和file函數(shù)意義相同,指定日志文件的打開模式,寫入模式用'w',追加模式使用'a' format: 指定輸出的內(nèi)容的格式,其中可以使用的參數(shù)有: %(levelno)s: 指定輸出日志的級別的數(shù)值 %(levelname)s: 指定輸出日志的級別的名稱 %(pathname)s: 指定當前執(zhí)行程序的路徑,其實就是sys.argv[0] %(filename)s: 指定保存日志文件的名字 %(funcName)s: 打印日志的當前函數(shù) %(lineno)d: 打印日志的當前行號 %(asctime)s: 打印日志的時間 %(thread)d: 打印線程ID %(threadName)s: 打印線程名稱 %(process)d: 打印進程ID %(message)s: 打印日志信息 datefmt: 指定時間格式,同time.strftime() level: 設置日志級別,默認為logging.WARNING,這里設定為logging.DEBUG
4.既想現(xiàn)在就看到輸出的日志,又想把程序運行的日志保存在文件里,方便以后查看,可以這樣設定:
import logging
logger=logging.getLogger()
#創(chuàng)建一個file_handle變量,用于把日志寫入到文件
file_handle=logging.FileHandler("log1.txt")
#創(chuàng)建一個stream_handle變量,用于輸出日志到屏幕上
stream_handle=logging.StreamHandler()
#設定輸出日志的級別為debug級別
logger.setLevel(logging.DEBUG)
#設定輸出日志的格式
fmt=logging.Formatter("%(asctime)s-%(levelname)s-%(message)s")
#為寫入文件的日志添加已設定的格式
file_handle.setFormatter(fmt)
#為輸出到屏幕的日志添加已設定的格式
stream_handle.setFormatter(fmt)
logger.addHandler(file_handle)
logger.addHandler(stream_handle)
#設定輸出日志的信息
logging.debug("This is debug message")
logging.info("This is info message")
logging.warning("This is warning message")
logging.error("This is error message")
logging.critical("This is critical message")
運行程序后,會生成一個名為log1.txt的文件,文件的內(nèi)容和屏幕上顯示的內(nèi)容都是:
2017-07-02 11:04:53,622-DEBUG-This is debug message
2017-07-02 11:04:53,623-INFO-This is info message
2017-07-02 11:04:53,623-WARNING-This is warning message
2017-07-02 11:04:53,623-ERROR-This is error message
2017-07-02 11:04:53,624-CRITICAL-This is critical message
在這里,還可以添加以下選項用來指定把要寫入文件的日志設定為debug級別,而輸出到屏幕上的日志還是warning級別
fh.setLevel(logging.Debug)
內(nèi)容擴展:
日志的作用
通過log的分析,可以方便用戶了解系統(tǒng)或軟件、應用的運行情況;如果你的應用log足夠豐富,也可以分析以往用戶的操作行為、類型喜好、地域分布或其他更多信息;如果一個應用的log同時也分了多個級別,那么可以很輕易地分析得到該應用的健康狀況,及時發(fā)現(xiàn)問題并快速定位、解決問題,補救損失。
簡單來講就是,我們通過記錄和分析日志可以了解一個系統(tǒng)或軟件程序運行情況是否正常,也可以在應用程序出現(xiàn)故障時快速定位問題。比如,做運維的同學,在接收到報警或各種問題反饋后,進行問題排查時通常都會先去看各種日志,大部分問題都可以在日志中找到答案。再比如,做開發(fā)的同學,可以通過IDE控制臺上輸出的各種日志進行程序調(diào)試。對于運維老司機或者有經(jīng)驗的開發(fā)人員,可以快速的通過日志定位到問題的根源。可見,日志的重要性不可小覷。日志的作用可以簡單總結(jié)為以下3點:
程序調(diào)試
了解軟件程序運行情況,是否正常
軟件程序運行故障分析與問題定位
如果應用的日志信息足夠詳細和豐富,還可以用來做用戶行為分析,如:分析用戶的操作行為、類型洗好、地域分布以及其它更多的信息,由此可以實現(xiàn)改進業(yè)務、提高商業(yè)利益。
到此這篇關(guān)于Python中關(guān)于logging模塊的學習筆記的文章就介紹到這了,更多相關(guān)Python之logging模塊相關(guān)介紹內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中tkinter實現(xiàn)GUI程序三個實例教程
Python提供了多個GUI庫,使開發(fā)人員能夠輕松創(chuàng)建各種交互式界面,這篇文章主要給大家介紹了關(guān)于python中tkinter實現(xiàn)GUI程序的三個實例教程,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-05-05
python中pandas對多列進行分組統(tǒng)計的實現(xiàn)
分組統(tǒng)計在很多時候都需要用到,可以實現(xiàn)很多數(shù)據(jù)庫函數(shù)的功能。本文主要介紹了python中pandas對多列進行分組統(tǒng)計的實現(xiàn),感興趣的可以了解一下2021-06-06
Pytorch實現(xiàn)簡單自定義網(wǎng)絡層的方法
這篇文章主要給大家介紹了關(guān)于Pytorch實現(xiàn)簡單自定義網(wǎng)絡層的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2022-05-05
Python調(diào)整PDF文檔頁邊距的方法小結(jié)
PDF 文檔中的邊距是指環(huán)繞每頁內(nèi)容的空白區(qū)域,充當文本或圖像與頁面邊緣之間的緩沖區(qū),本文將介紹如何使用 Spire.PDF for Python 修改 PDF 文檔的頁邊距,為不同使用場景定制合適的文檔布局,需要的朋友可以參考下2024-05-05
基于Python實現(xiàn)視頻分辨率轉(zhuǎn)換
這篇文章主要介紹了基于Python實現(xiàn)視頻的分辨率轉(zhuǎn)換的示例代碼,文中的代碼講解詳細,對學習Python有一定的幫助,感興趣的小伙伴可以了解一下2021-12-12

