最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python之打印日志庫(logging)

 更新時間:2023年09月13日 16:57:26   作者:hopyGreat  
這篇文章主要介紹了Python之打印日志庫(logging),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、日志等級

級別何時使用
DEBUG細(xì)節(jié)信息,僅當(dāng)診斷問題時使用
INFO確認(rèn)程序按預(yù)期運行
WARNING表明已經(jīng)或即將發(fā)生的意外(例如:磁盤空間不足)。程序仍按預(yù)期進行
ERROR由于嚴(yán)重的問題,程序的某些功能已經(jīng)不能正常執(zhí)行
CRITICAL嚴(yán)重的錯誤,表明程序已不能繼續(xù)執(zhí)行

默認(rèn)等級是“WARNING”,意味著只會跟蹤該級別及以上的事件(由上倒下等級以此遞增),除非更改日志配置。

二、基本用法

1. quick start

>>> import logging
>>> logging.warning("warning")
WARNING:root:warning
>>> logging.info("information")
>>>

注意這里只有warning的信息打印出來了。如前面所說,默認(rèn)等級是“WARNING”,只會追蹤該級別及以上的事件,所以info信息沒有被打印出來。

其中WARNING是記錄級別;root代表打印的模塊來源(沒有顯示設(shè)置,顯然是默認(rèn)值,甚至不是當(dāng)前模塊的名稱);warning就是我們顯示打印的數(shù)據(jù)信息了。

2. 記錄日志到文件

import logging
logging.basicConfig(filename='pycode.log', level=logging.DEBUG)
logging.warning('warning')
logging.info('information')
logging.debug('debug')

通過設(shè)置logging的基本配置可以將記錄重定向到文件中。同時可以通過level指定打印級別。

# pycode.log
WARNING:root:warning
INFO:root:information
DEBUG:root:debug

注意到,此時在文件中的打印級別已經(jīng)降為 DEBUG了。該方法也適用在命令行中修改打印級別。

但有個需要注意的點:對basicConfig的調(diào)用應(yīng)該在debug(),info()等函數(shù)前面。basicConfig是一次性的配置,只有第一次調(diào)用會進行操作,隨后的調(diào)用不會產(chǎn)生有效操作。

什么意思呢?

舉個例子:

>>> import logging
>>> logging.warning("123")
WARNING:root:123
>>> logging.info("123") # 不會有輸出
>>> logging.basicConfig(level=logging.DEBUG)
>>> logging.info("123") # 依舊不會有輸出

另一個例子:

>>> import logging
>>> logging.basciConfig(level=loggin.DEBUG)
>>> logging.warning("123")
WARNING:root:123
>>> logging.info("123")
INFO:root:123

在第一次調(diào)用logging.info()、warning()等函數(shù)的時候,就會調(diào)用內(nèi)置的basicConfig。此時就已經(jīng)固化打印級別為WARNING了,即使后面再次顯式調(diào)用basicConfig也不會有效。 

命令行指定級別:除了通過basicConfig設(shè)置level,也可以在執(zhí)行Python程序的時候,通過命令行參數(shù)指定。

$ 設(shè)置logging打印級別為INFO 
$ python3 pycode.py --log=INFO

追加打印:此外,記錄輸出到文件中,默認(rèn)是追加打印的。如果希望重新記錄,可以這樣:

logging.basicConfig(filename='pycode.log', filemode='w', level=logging.DEBUG)

3. 多模塊打印 

# main.py
import logging
import somelib
logging.basicConfig(level=logging.INFO)
def main():
    logging.info("py01")
    py02.do_something()
if __name__ == '__main__':
    main()
# ---------------------------
# somelib.py
import logging
def do_something():
    logging.info("py02")

輸出:

# pycode.log
INFO:root:py01
INFO:root:py02

可以看到,多模塊的信息都能正常打印到日志文件中。但很明顯可以發(fā)現(xiàn)不論是從哪個模塊輸出,日志記錄中顯示的都是root。所以目前還不能跟蹤記錄打印的模塊來源。

4. 定義打印格式

前面出現(xiàn)的打印信息基本上是:記錄級別:模塊來源:記錄信息

同樣可以在basicConfig中定義打印的格式:

>>> import logging
>>> logging.basicConfig(format='%(asctime)s : %(name)s : %(message)s', level=logging.INFO)
>>> logging.info("123")
2020-06-19 22:38:16,048 : root : 123

可以看到,此時展示了打印時間,模塊來源及記錄信息。

格式配置屬性:

格式描述
%(asctime)s調(diào)用消息記錄打印時的時間(格式化后的時間)
%(created)f調(diào)用消息記錄打印時的時間(未格式化的描述,相當(dāng)于time.time())
%(filename)s調(diào)用消息記錄打印的文件名稱(在哪個文件里面)
%(funcName)s調(diào)用消息記錄打印的函數(shù)名稱(在哪個函數(shù)里面)
%(levelname)s消息記錄級別(DEBUG,INFO,WARNING,ERROR,CRITICAL)
%(levelno)s消息記錄級別的數(shù)字號(DEBUG=10,INFO=20,WARNING=30,ERROR=40,CRITICAL=50)
%(lineno)d調(diào)用消息記錄打印的行數(shù)(在哪一行打印的)
%(message)s待打印的自定義消息
%(module)s調(diào)用消息記錄的模塊名
%(msecs)d調(diào)用消息記錄打印時間的毫秒部分
%(name)s打印消息的logger對象名稱(自定義的,默認(rèn)是root)
%(pathname)s調(diào)用消息記錄的文件路徑
%(process)d進程ID
%(processName)s進程名
%(relativeCreated)d相對logging模塊被加載到打印消息記錄時的相對時間(毫秒)
%(thread)d線程ID
%(threadName)s線程名

此時,為了跟蹤打印消息的來源,我們可以組織一個這樣的格式串:

# main.py
import logging
import somelib
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s: %(name)s: %(levelname)s: %(message)s")
logger = logging.getLogger("main123")
def main():
    logger.info("py01")
    somelib.do_something()
if __name__ == '__main__':
    main()
# ------------------------------
# somelib.py
import logging
logger = logging.getLogger("pylib")
def do_something():
    logger.info("py02")
# ------------------------------
# 輸出
2020-06-19 23:26:27,263: main123: INFO: py01
2020-06-19 23:26:27,264: pylib: INFO: py02

有其他的需求,也可以根據(jù)上面列出來的屬性自行搭配。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解pyinstaller生成exe的閃退問題解決方案

    詳解pyinstaller生成exe的閃退問題解決方案

    這篇文章主要介紹了詳解pyinstaller生成exe的閃退問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Python實現(xiàn)串口通信(pyserial)過程解析

    Python實現(xiàn)串口通信(pyserial)過程解析

    這篇文章主要介紹了Python實現(xiàn)串口通信(pyserial)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Python列表之間的數(shù)字與字符轉(zhuǎn)化實例

    Python列表之間的數(shù)字與字符轉(zhuǎn)化實例

    在python列表操作中,面對需要把列表中的字符串轉(zhuǎn)為禮拜的操作,無需強轉(zhuǎn),通過簡單的幾步就可以實現(xiàn),下面這篇文章主要給大家介紹了關(guān)于Python列表之間的數(shù)字與字符轉(zhuǎn)化的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • python3大文件解壓和基本操作

    python3大文件解壓和基本操作

    這篇文章主要為大家詳細(xì)介紹了python3大文件解壓和基本操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 使用python 計算百分位數(shù)實現(xiàn)數(shù)據(jù)分箱代碼

    使用python 計算百分位數(shù)實現(xiàn)數(shù)據(jù)分箱代碼

    這篇文章主要介紹了使用python 計算百分位數(shù)實現(xiàn)數(shù)據(jù)分箱代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • playwright保持網(wǎng)站的登錄狀態(tài)的幾種方法

    playwright保持網(wǎng)站的登錄狀態(tài)的幾種方法

    本文主要介紹了playwright保持網(wǎng)站的登錄狀態(tài)的幾種方法,包括保存和加載瀏覽器上下文的存儲狀態(tài),使用持久化上下文和使用Cookies手動保存和加載會話,感興趣的可以了解一下
    2026-01-01
  • Django 解決上傳文件時,request.FILES為空的問題

    Django 解決上傳文件時,request.FILES為空的問題

    這篇文章主要介紹了Django 解決上傳文件時,request.FILES為空的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 從訓(xùn)練好的tensorflow模型中打印訓(xùn)練變量實例

    從訓(xùn)練好的tensorflow模型中打印訓(xùn)練變量實例

    今天小編就為大家分享一篇從訓(xùn)練好的tensorflow模型中打印訓(xùn)練變量實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • selenium+python自動化測試之環(huán)境搭建

    selenium+python自動化測試之環(huán)境搭建

    這篇文章主要介紹了selenium+python自動化測試之環(huán)境搭建,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • matplotlib?3D模型繪制一朵小紅花

    matplotlib?3D模型繪制一朵小紅花

    這篇文章主要介紹了matplotlib?3D模型繪制一朵小紅花,代碼有趣也有一定的知識參考價值,需要的朋友可以參考文章內(nèi)容下去試試
    2022-02-02

最新評論

漠河县| 兖州市| 桂东县| 顺平县| 长丰县| 桐梓县| 普洱| 噶尔县| 正镶白旗| 杨浦区| 昌图县| 定州市| 花莲县| 葵青区| 阿勒泰市| 永靖县| 余江县| 侯马市| 安新县| 彝良县| 寿光市| 同江市| 景洪市| 安岳县| 蓬莱市| 汽车| 墨江| 洛阳市| 敖汉旗| 北碚区| 宜丰县| 二连浩特市| 大邑县| 运城市| 巧家县| 郎溪县| 堆龙德庆县| 晋宁县| 临安市| 雅安市| 道真|