python將日志寫(xiě)入文件超詳細(xì)步驟
1、需求
我們?cè)谟?xùn)練模型的時(shí)候,有時(shí)候需要將訓(xùn)練日志輸出到一個(gè)文件中,方便隨時(shí)查看訓(xùn)練日志。
訓(xùn)練模型時(shí)候,訓(xùn)練日志在控制臺(tái)展示,關(guān)閉控制臺(tái)后日志會(huì)消失。這時(shí),我們需要將控制臺(tái)中的訓(xùn)練日志信息輸出到一個(gè)指定文件中,方便我們隨時(shí)查看。
將控制臺(tái)中的日志信息輸入到當(dāng)前目錄下的application.log文件中


2、方法:python logging模塊
logging 是Python中非常強(qiáng)大且靈活的庫(kù),用于記錄和跟蹤應(yīng)用程序運(yùn)行時(shí)發(fā)生的事件。
在Python中,使用 logging 模塊可以寫(xiě)入日志信息到指定文件。
2.1 basicConfig() 快速配置
- 導(dǎo)入logging模塊
- 設(shè)置全局的日志格式和級(jí)別
- 獲取logger
- 創(chuàng)建文件處理器,指定日志文件和日志級(jí)別(局部)
- 添加文件處理器到logger
import logging
import warnings
# 忽略所有 UserWarning 警告
warnings.filterwarnings("ignore", category=UserWarning)
# 1、設(shè)置全局的日志格式和級(jí)別
logging.basicConfig(format='%(asctime)s - %(levelname)s - %(name)s - %(message)s',
datefmt='%m/%d/%Y %H:%M:%S',
level=logging.INFO)
# 2、獲取logger (給日志器起個(gè)名字 "__name__")
logger = logging.getLogger(__name__)# __name__內(nèi)置變量模塊名稱(chēng),輕松地識(shí)別出哪個(gè)模塊產(chǎn)生了哪些日志消息(主程序模塊)
# 3、創(chuàng)建文件處理器,指定日志文件和日志級(jí)別(局部)---文件輸出FileHandle(輸出到指定文件)
file_handler = logging.FileHandler('application.log') #指定日志文件名application.log,默認(rèn)在當(dāng)前目錄下創(chuàng)建
file_handler.setLevel(logging.INFO) # 設(shè)置日志級(jí)別(只輸出對(duì)應(yīng)級(jí)別INFO的日志信息)
# 設(shè)置日志格式
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(name)s - %(message)s', '%m/%d/%Y %H:%M:%S'))
# 4、添加文件處理器到logger
logger.addHandler(file_handler)
# 訓(xùn)練模型的代碼
epoch = 7
# 記錄日志信息
logger.info("Get better performance at epoch {}".format(epoch))
# 在主類(lèi)中編寫(xiě)日志代碼
# 判斷當(dāng)前程序是否為主程序,確保 main() 函數(shù)只在直接運(yùn)行該P(yáng)ython文件時(shí)執(zhí)行,如果文件被其他模塊導(dǎo)入,則不執(zhí)行 main()
# 主程序內(nèi)置變量 __name__
if __name__ == "__main__":
main()
2.2 查看application.log日志文件

2.3、logging知識(shí)
- Loggers:應(yīng)用程序中使用的接口,用于發(fā)送日志消息。它們來(lái)自logging.getLogger(name),name是用于標(biāo)識(shí)logger源的字符串
- Handlers:用于配置日志處理的目的地,如文件、控制臺(tái)等。常用的有
StreamHandler(控制臺(tái)輸出)和FileHandle(文件輸出) - Formatters:定義最終輸出中日志記錄的布局
- Filters:提供更細(xì)粒度的工具來(lái)進(jìn)一步控制哪些日志記錄將被輸出
2.4、日志級(jí)別
debug,info,warning,error,critical
- DEBUG:詳細(xì)信息,通常只有在診斷問(wèn)題時(shí)才感興趣。
- INFO:證明事情按預(yù)期工作(最常用)
- WARNING:某些還不是錯(cuò)誤的事情的指示,但是應(yīng)該注意的。
- ERROR:由于某些更嚴(yán)重的問(wèn)題,軟件已不能執(zhí)行一些功能了
- CRITICAL:嚴(yán)重錯(cuò)誤,表明程序已不能繼續(xù)運(yùn)行。
總結(jié)
到此這篇關(guān)于python將日志寫(xiě)入文件的文章就介紹到這了,更多相關(guān)python日志寫(xiě)入文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python orm 框架中sqlalchemy用法實(shí)例詳解
這篇文章主要介紹了python orm 框架中sqlalchemy用法,結(jié)合實(shí)例形式詳細(xì)分析了Python orm 框架基本概念、原理及sqlalchemy相關(guān)使用技巧,需要的朋友可以參考下2020-02-02
Python中實(shí)現(xiàn)定時(shí)任務(wù)常見(jiàn)的幾種方式
在Python中,實(shí)現(xiàn)定時(shí)任務(wù)是一個(gè)常見(jiàn)的需求,無(wú)論是在自動(dòng)化腳本、數(shù)據(jù)處理、系統(tǒng)監(jiān)控還是其他許多應(yīng)用場(chǎng)景中,Python提供了多種方法來(lái)實(shí)現(xiàn)定時(shí)任務(wù),包括使用標(biāo)準(zhǔn)庫(kù)、第三方庫(kù)以及系統(tǒng)級(jí)別的工具,本文將詳細(xì)介紹幾種常見(jiàn)的Python定時(shí)任務(wù)實(shí)現(xiàn)方式2024-08-08
Python API 自動(dòng)化實(shí)戰(zhàn)詳解(純代碼)
今天小編就為大家分享一篇Python API 自動(dòng)化實(shí)戰(zhàn)詳解(純代碼),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
對(duì)pycharm 修改程序運(yùn)行所需內(nèi)存詳解
今天小編就為大家分享一篇對(duì)pycharm 修改程序運(yùn)行所需內(nèi)存詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Python使用matplotlib時(shí)顯示中文亂碼解決方法(或更改字體)
這篇文章主要給大家介紹了關(guān)于Python使用matplotlib時(shí)顯示中文亂碼的解決方法(或更改字體),在Matplotlib中,中文亂碼問(wèn)題通常出現(xiàn)在圖表的標(biāo)題、標(biāo)簽和刻度上,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12

