python將日志寫入文件超詳細(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 模塊可以寫入日志信息到指定文件。
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)置變量模塊名稱,輕松地識(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)) # 在主類中編寫日志代碼 # 判斷當(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將日志寫入文件的文章就介紹到這了,更多相關(guān)python日志寫入文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用python按照?qǐng)D像灰度值統(tǒng)計(jì)并篩選圖片的操作(PIL,shutil,os)
這篇文章主要介紹了用python按照?qǐng)D像灰度值統(tǒng)計(jì)并篩選圖片的操作(PIL,shutil,os),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Python移動(dòng)測(cè)試開(kāi)發(fā)subprocess模塊項(xiàng)目實(shí)戰(zhàn)
這篇文章主要為大家介紹了Python移動(dòng)測(cè)試開(kāi)發(fā)subprocess模塊項(xiàng)目實(shí)戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07使用python求解迷宮問(wèn)題的三種實(shí)現(xiàn)方法
關(guān)于迷宮問(wèn)題,常見(jiàn)會(huì)問(wèn)能不能到達(dá)某點(diǎn),以及打印到達(dá)的最短路徑,下面這篇文章主要給大家介紹了關(guān)于如何使用python求解迷宮問(wèn)題的三種實(shí)現(xiàn)方法,需要的朋友可以參考下2022-03-03Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊(duì)列的操作方法
這篇文章主要介紹了Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊(duì)列的操作方法,需要的朋友可以參考下2019-07-07python中的turtle庫(kù)函數(shù)簡(jiǎn)單使用教程
這篇文章主要介紹了python中的turtle庫(kù)函數(shù)簡(jiǎn)單使用教程。本文通過(guò)圖片的形式給大家展示的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07如何使用Python判斷應(yīng)用是否處于已打包狀態(tài)
在使用 PyInstaller 打包 Python 應(yīng)用時(shí),有時(shí)需要在代碼中判斷程序是否處于“打包狀態(tài)”,本文將介紹幾種方法來(lái)判斷是否處于打包狀態(tài),感興趣的可以了解下2025-03-03用Python實(shí)現(xiàn)批量生成法務(wù)函代碼
大家好,本篇文章主要講的是用Python實(shí)現(xiàn)批量生成法務(wù)函代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02Python被遠(yuǎn)程主機(jī)強(qiáng)制關(guān)閉后自動(dòng)重新運(yùn)行進(jìn)程的示例
要實(shí)現(xiàn)Python程序在被遠(yuǎn)程主機(jī)強(qiáng)制關(guān)閉后能夠自動(dòng)重新運(yùn)行,我們可以采用幾種方法,但最直接且常用的方法之一是結(jié)合操作系統(tǒng)級(jí)的工具或腳本,這篇文章主要介紹了Python被遠(yuǎn)程主機(jī)強(qiáng)制關(guān)閉后怎么自動(dòng)重新運(yùn)行進(jìn)程,需要的朋友可以參考下2024-08-08