Python小知識(shí),別用print打印日志,可以用logging模塊
大家在寫(xiě)代碼的時(shí)候,經(jīng)常會(huì)使用print打印日志方便排查問(wèn)題,然而print的問(wèn)題就是太過(guò)簡(jiǎn)單,缺少時(shí)間、日志級(jí)別等格式化信息。
Python自帶的logging模塊,很簡(jiǎn)單就能實(shí)現(xiàn)日志的配置和打印,它有兩種用法,方法1是把日志輸出到標(biāo)準(zhǔn)輸出,其實(shí)就是命令行界面,方法2則是輸出日志到文件,更加方便。
## 方法1:配置并輸出日志到標(biāo)準(zhǔn)輸出
import loggingLOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT)logging.info("清空重建表")
當(dāng)執(zhí)行程序,就會(huì)輸出:
2021-01-24 10:43:37,883 - INFO - 清空重建表比自己用print要好用一些了。
## 方法2:配置輸出到日志文件
import loggingimport logging.handlersimport osLOG_FILE = "test_log.log"logging.basicConfig(filename=LOG_FILE,filemode="w",format="[%(levelname)s] %(asctime)s [%(filename)s:%(lineno)d, %(funcName)s] %(message)s",level=logging.INFO)time_hdls = logging.handlers.TimedRotatingFileHandler(LOG_FILE, when='D', interval=1, backupCount=7)logging.getLogger().addHandler(time_hdls)logging.info("hello world")
然后,你會(huì)發(fā)現(xiàn)有這個(gè)表現(xiàn):
1、多了一個(gè)文件,叫做test_log.log;
2、文件中是這樣的內(nèi)容,信息更加豐富:
[INFO] 2021-03-29 22:19:46,753 [testlog.py:14, <module>] hello worldhello world
3、這個(gè)日志文件,會(huì)每天備份一個(gè)文件,并且只保留7天的日志;
真正的線上服務(wù),是會(huì)這樣來(lái)配置日志的,方便、強(qiáng)大。
評(píng)論
圖片
表情
