網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
?Python?中?logging?模塊使用詳情_(kāi)python
作者:Python學(xué)習(xí)與數(shù)據(jù)挖掘 ? 更新時(shí)間: 2022-05-04 編程語(yǔ)言1.為什么要用logging模塊
在實(shí)際應(yīng)用中,日志文件十分重要,通過(guò)日志文件,我們知道程序運(yùn)行的細(xì)節(jié);同時(shí),當(dāng)程序出問(wèn)題時(shí),我們也可以通過(guò)日志快速定位問(wèn)題所在。在我們寫(xiě)程序時(shí),也可以借助 logging 模塊的輸出信息來(lái)調(diào)試代碼。
但是很多人還是在程序中使用print()函數(shù)來(lái)輸出一些信息,比如:
print 'Start reading database' records = model.read_recrods() print '# records', records print 'Updating record ...' model.update_records(records) print 'done'
這樣用的話缺點(diǎn)很明顯,當(dāng)程序?qū)懞眠\(yùn)行時(shí),我們要把這些print()函數(shù)刪掉,在簡(jiǎn)單的的程序中用還行,當(dāng)程序比較復(fù)雜時(shí),這個(gè)辦法很低效。
如果使用logging
模塊,看看效果
import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) logger.info('Start reading database') # read database here records = {'john': 55, 'tom': 66} logger.debug('Records: %s', records) logger.info('Updating records ...') # update records here logger.info('Finish updating records')
運(yùn)行結(jié)果如下:
INFO:__main__:Start reading database INFO:__main__:Updating records ... INFO:__main__:Finish updating records
你也許會(huì)問(wèn),這和print()
函數(shù)有什么區(qū)別呢?區(qū)別就在于,logging模塊可以通過(guò)改變level來(lái)控制一些語(yǔ)句是否被輸出,比如當(dāng)我們把level改成DEBUG級(jí)別:
logging.basicConfig(level=logging.DEBUG)
得到輸出如下:
INFO:__main__:Start reading database
DEBUG:__main__:Records: {'john': 55, 'tom': 66}
INFO:__main__:Updating records ...
INFO:__main__:Finish updating records
2.logging模塊介紹
logging
模塊是python自帶的一個(gè)包,因此在使用的時(shí)候,不必安裝,只需要import即可。有5個(gè)level,分別是debug,主要是查看一下程序運(yùn)行的信息,一般是調(diào)試程序要看的信息;info,是我們看程序是否如預(yù)料執(zhí)行的信息;warn,意料之外的,但是不影響程序運(yùn)行;error
和critical
就是一些比較嚴(yán)重的問(wèn)題,會(huì)影響程序運(yùn)行。默認(rèn)leval是warn,這個(gè)時(shí)候debug級(jí)別和info級(jí)別就不會(huì)被輸出到日志里了。如果想要看到這些信息,就需要進(jìn)行一些設(shè)置。
3.基礎(chǔ)設(shè)置
我們主要調(diào)用basicConfig(***kwargs*)
這個(gè)函數(shù)對(duì)logging
進(jìn)行設(shè)置。
常用的參數(shù)如下:
-
level
:主要調(diào)整logging的級(jí)別 -
filename
:輸出日志的路徑 -
filemode
:直接寫(xiě)入還是追加寫(xiě)入 -
format
:輸出的格式
我們通過(guò)調(diào)整format,可以輸出我們想要的格式,比如:
import logging logging.basicConfig(format='%(asctime)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S') logging.warning('Admin logged out')
結(jié)果是:
12-Jul-18 20:53:19 - Admin logged out
這就是在format
參數(shù)中設(shè)置了時(shí)間的,所以得到了時(shí)間,我們可以輸出多種想要的信息
總結(jié):
本文主要介紹了logging
模塊的基礎(chǔ)用法,除非是自己寫(xiě)的小腳本中我們使用print()函數(shù),其他情況下最好還是用logging模塊來(lái)打印信息,輸出日志吧。
原文鏈接:https://blog.csdn.net/weixin_38037405/article/details/121859354
相關(guān)推薦
- 2022-04-02 C語(yǔ)言對(duì)冒泡排序進(jìn)行升級(jí)介紹_C 語(yǔ)言
- 2023-02-05 不同的編程語(yǔ)言輸出?“Hello?World”?代碼_其它綜合
- 2022-04-03 Pytorch寫(xiě)數(shù)字識(shí)別LeNet模型_python
- 2022-07-09 Android同步異步任務(wù)與多線程和Handler消息處理機(jī)制
- 2022-11-16 Python中使用__hash__和__eq__方法的問(wèn)題_python
- 2022-12-27 golang中數(shù)組與切片的區(qū)別詳析_Golang
- 2022-08-11 淺析k8s中各組件和kube?apiserver通信時(shí)的認(rèn)證和鑒權(quán)問(wèn)題_云其它
- 2024-02-16 SpringBoot 攔截器Intercepto的創(chuàng)建與基本使用
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支