日志打印方式
常見(jiàn)的Python日志打印方式為使用內(nèi)置函數(shù)print()
或者logging
模塊打印日志。
-
print()
只能將日志打印至控制臺(tái),不推薦此方式 -
logging
模塊默認(rèn)將日志打印至控制臺(tái),也可以配置打印到指定日志文件,推薦使用此方式
logging模塊
日志等級(jí)
logging提供了函數(shù)來(lái)做日志處理,分別為debug()/info()/warning()/error()/critical()
,對(duì)應(yīng)日志的五個(gè)等級(jí)DEBUG/INFO/WARNING/ERROR/CRITICAL
。如下表所示。
函數(shù) | 日志等級(jí) | 等級(jí)值 | 說(shuō)明 |
---|---|---|---|
debug() | DEBUG | 10 | 調(diào)試模式下的日志,一般是給程序員看的 |
info() | INFO | 20 | 程序正常運(yùn)行時(shí)輸出的日志 |
warning() | WARNING | 30 | 警告信息,提示將來(lái)可能出現(xiàn)的問(wèn)題 |
error() | ERROR | 40 | 程序運(yùn)行過(guò)程中出現(xiàn)的錯(cuò)誤信息 |
critical() | CRITICAL | 50 | 嚴(yán)重錯(cuò)誤,表明軟件已罷工 |
設(shè)置日志等級(jí)后只會(huì)打印大于等于當(dāng)前等級(jí)的日志,從logging模塊的源碼里可見(jiàn)日志等級(jí)大小排序如下。
DEBUG等級(jí)值最小,因此會(huì)打印出所有等級(jí)的日志。
logging里的默認(rèn)等級(jí)為WARNING
,也就是說(shuō)在不設(shè)置日志等級(jí)的情況下,只有WARNING/ERROR/CRITICAL的日志才會(huì)被打印輸出。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-461584.html
打印輸出
- 如果只是打印至控制臺(tái),使用
basicConfig()
函數(shù)即可。默認(rèn)的日志收集器名稱為root
,可以在創(chuàng)建日志對(duì)象時(shí)設(shè)置該名稱。
logging.basicConfig(level=logging.INFO)
- 如果需要打印至日志文件,可參考如下示例代碼。
# 創(chuàng)建日志對(duì)象(不設(shè)置時(shí)默認(rèn)名稱為root)
log = logging.getLogger('test_http')
# 設(shè)置日志級(jí)別(默認(rèn)為WARNING)
log.setLevel('INFO')
# 設(shè)置輸出渠道(以文件方式輸出需設(shè)置文件路徑)
file_handler = logging.FileHandler('test.log', encoding='utf-8')
file_handler.setLevel('INFO')
# 設(shè)置輸出格式(實(shí)例化渠道)
fmt_str = '%(asctime)s %(thread)d %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'
formatter = logging.Formatter(fmt_str)
# 綁定渠道的輸出格式
file_handler.setFormatter(formatter)
# 綁定渠道到日志收集器
log.addHandler(file_handler)
def test_login():
log.info("login start...")
if __name__ == '__main__':
log.setLevel(logging.ERROR)
test_login()
輸出至log文件的日志格式如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-461584.html
到了這里,關(guān)于python中如何打印日志信息的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!