欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python關(guān)于第三方日志的QA記錄詳解

 更新時(shí)間:2023年10月08日 09:36:18   作者:ponponon  
這篇文章主要為大家介紹了python關(guān)于第三方日志的QA記錄詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Q:python 查看當(dāng)前的日志級(jí)別

A:在 Python 中,你可以使用 logging 模塊來(lái)查看當(dāng)前的日志級(jí)別。logging 模塊提供了一個(gè)全局的日志系統(tǒng),它包含了各種配置和方法,允許你控制日志的輸出。

以下是一個(gè)簡(jiǎn)單的例子,演示如何查看當(dāng)前的日志級(jí)別:

import logging
# 獲取根日志記錄器
logger = logging.getLogger()
# 獲取當(dāng)前的日志級(jí)別
current_log_level = logger.getEffectiveLevel()
# 輸出當(dāng)前的日志級(jí)別
print(f"Current log level: {current_log_level}")
# 設(shè)置一個(gè)日志級(jí)別(僅用于演示,你可能不需要設(shè)置級(jí)別)
logger.setLevel(logging.DEBUG)
# 再次獲取當(dāng)前的日志級(jí)別
current_log_level = logger.getEffectiveLevel()
# 輸出更新后的日志級(jí)別
print(f"Updated log level: {current_log_level}")

在這個(gè)例子中,首先使用 getEffectiveLevel() 方法獲取當(dāng)前的日志級(jí)別,并將其打印出來(lái)。然后,通過(guò) setLevel() 方法設(shè)置了一個(gè)新的日志級(jí)別(在實(shí)際應(yīng)用中,你可能不需要設(shè)置級(jí)別,這只是為了演示目的)。最后,再次獲取當(dāng)前的日志級(jí)別并打印出來(lái)。

請(qǐng)注意,getEffectiveLevel() 返回的是數(shù)值,你可以使用 logging 模塊中定義的常量(如 logging.DEBUG、logging.INFO 等)來(lái)比較這些值,以便更容易理解日志級(jí)別。

Q:輸出值是 30,表示什么?

A: 在 Python 的 logging 模塊中,日志級(jí)別使用整數(shù)值表示,這些整數(shù)值對(duì)應(yīng)于預(yù)定義的幾個(gè)常量。這些整數(shù)值反映了一個(gè)日志消息的優(yōu)先級(jí),從最低級(jí)別的 DEBUG 到最高級(jí)別的 CRITICAL。

下面是一些常用的日志級(jí)別和它們對(duì)應(yīng)的整數(shù)值:

  • CRITICAL: 50
  • ERROR: 40
  • WARNING (或 WARN): 30
  • INFO: 20
  • DEBUG: 10
  • NOTSET: 0

在你的代碼中,如果 logger.getEffectiveLevel() 返回值為 30,表示當(dāng)前的日志級(jí)別為 WARNING。這意味著只有 WARNING、ERROR 和 CRITICAL 級(jí)別的日志消息會(huì)被記錄,而 INFO 和 DEBUG 級(jí)別的消息將被忽略。

如果你想要輸出更詳細(xì)的日志信息,你可以通過(guò)調(diào)整日志級(jí)別來(lái)設(shè)置為更低的值。例如,使用 logger.setLevel(logging.DEBUG) 將會(huì)啟用 DEBUG 級(jí)別及以上的所有日志消息。

Q: 怎么讓 logger 輸出到標(biāo)準(zhǔn)輸出

A: 在 Python 的 logging 模塊中,日志可以配置為輸出到不同的地方,其中之一是標(biāo)準(zhǔn)輸出。通常,如果你想將日志輸出到標(biāo)準(zhǔn)輸出,你可以進(jìn)行以下配置:

import logging
# 獲取根日志記錄器
logger = logging.getLogger()
# 創(chuàng)建一個(gè) StreamHandler,用于將日志輸出到標(biāo)準(zhǔn)輸出
stream_handler = logging.StreamHandler()
# 創(chuàng)建一個(gè)格式化器,可選,根據(jù)需要進(jìn)行配置
formatter = logging.Formatter('%(levelname)s - %(message)s')
stream_handler.setFormatter(formatter)
# 將 StreamHandler 添加到日志記錄器中
logger.addHandler(stream_handler)
# 設(shè)置日志級(jí)別,可選,根據(jù)需要進(jìn)行配置
logger.setLevel(logging.DEBUG)
# 之后的日志消息將會(huì)輸出到標(biāo)準(zhǔn)輸出
logger.debug("This is a debug message.")
logger.info("This is an info message.")
logger.warning("This is a warning message.")
logger.error("This is an error message.")

在上面的例子中,我們使用 logging.StreamHandler() 創(chuàng)建了一個(gè)處理器,該處理器將日志消息發(fā)送到標(biāo)準(zhǔn)輸出。然后,我們可以通過(guò) logger.addHandler(stream_handler) 將這個(gè)處理器添加到日志記錄器中。最后,我們通過(guò) logger.setLevel(logging.DEBUG) 設(shè)置了日志級(jí)別,以確保低于指定級(jí)別的日志消息不會(huì)被輸出。

請(qǐng)注意,這只是一個(gè)基本的配置示例,你可以根據(jù)實(shí)際需求對(duì)格式、級(jí)別等進(jìn)行調(diào)整。

Q: logger.warning 的 exc_info 參數(shù)是干嘛的

A: exc_info 是 logger.warning 等級(jí)函數(shù)中的一個(gè)可選參數(shù),用于指定是否將異常信息記錄到日志中。當(dāng)你使用 logger.warning 記錄一條日志,并且在該日志消息中包含了異常信息,exc_info 參數(shù)可以控制是否在日志中包含詳細(xì)的異常信息(traceback)。

以下是 logger.warning 函數(shù)的簽名:

Logger.warning(msg, *args, exc_info=False, **kwargs)
  • msg: 要記錄的日志消息,可以包含格式化字符串。
  • *args: 用于格式化字符串的參數(shù)。
  • exc_info: 一個(gè)布爾值,如果為 True,則將異常信息(traceback)包含在日志中。如果為 False(默認(rèn)),則不包含異常信息。
  • **kwargs: 其他可選的參數(shù),例如 extra、stack_info 等。

示例使用:

import logging
# 獲取根日志記錄器
logger = logging.getLogger()
try:
    # 一些可能引發(fā)異常的代碼
    result = 1 / 0
except Exception as e:
    # 記錄警告級(jí)別的日志,并將異常信息包含在日志中
    logger.warning("An error occurred: %s", e, exc_info=True)

在這個(gè)例子中,exc_info=True 將導(dǎo)致日志中包含詳細(xì)的異常信息,包括 traceback。如果省略 exc_info 參數(shù)或?qū)⑵湓O(shè)置為 False,則日志中將不包含異常信息。

注意:通常,將異常信息記錄到日志中可以幫助你在排查問(wèn)題時(shí)更容易找到出錯(cuò)的地方,但要謹(jǐn)慎使用,尤其是在生產(chǎn)環(huán)境中,因?yàn)樵敿?xì)的異常信息可能包含敏感信息。

Q: 如何刪除所有 logger 的 所有 Handler

A: 如果你想要?jiǎng)h除所有 logger 的所有 handler,可以通過(guò)以下方式實(shí)現(xiàn):

import logging
# 獲取所有已經(jīng)存在的 logger 名稱(chēng)
existing_loggers = logging.Logger.manager.loggerDict.keys()
# 遍歷每個(gè) logger,并刪除其所有 handler
for logger_name in existing_loggers:
    logger = logging.getLogger(logger_name)
    handlers = logger.handlers[:]
    for handler in handlers:
        logger.removeHandler(handler)
        handler.close()

這段代碼首先獲取了所有已經(jīng)存在的 logger 名稱(chēng),然后遍歷每個(gè) logger,并刪除其所有 handler。在刪除 handler 之后,還調(diào)用了 handler.close() 來(lái)關(guān)閉每個(gè) handler,釋放可能被占用的資源。

請(qǐng)注意,這會(huì)刪除所有 logger 的 handler,包括你之前可能設(shè)置的一些配置。如果你只想刪除根 logger 的 handler,可以使用以下代碼:

import logging
# 獲取根 logger
logger = logging.getLogger()
# 獲取根 logger 的所有 handler
handlers = logger.handlers[:]
# 遍歷每個(gè) handler 并刪除
for handler in handlers:
    logger.removeHandler(handler)
    handler.close()

這樣只會(huì)刪除根 logger 的 handler,而不會(huì)影響其他 logger。如果你之前設(shè)置了其他 logger 的 handler,它們將不受影響。

Q:python 查看所有 logger

A: 你可以使用 logging 模塊的 Logger.manager 屬性來(lái)獲取所有已創(chuàng)建的 logger 對(duì)象的名稱(chēng)。這可以通過(guò)以下方式實(shí)現(xiàn):

import logging
# 獲取所有已經(jīng)存在的 logger 名稱(chēng)
existing_loggers = logging.Logger.manager.loggerDict.keys()
# 打印所有 logger 的名稱(chēng)
for logger_name in existing_loggers:
    print(logger_name)

上述代碼首先獲取了 Logger.manager.loggerDict 中的所有鍵,每個(gè)鍵都是一個(gè) logger 對(duì)象的名稱(chēng)。然后,通過(guò)循環(huán)遍歷這些鍵,即 logger 名稱(chēng),并打印出來(lái)。

需要注意的是,Logger.manager 是 logging 模塊的一個(gè)全局變量,用于管理所有的 logger 對(duì)象。這個(gè)方法僅能獲取在當(dāng)前運(yùn)行時(shí)已經(jīng)創(chuàng)建的 logger,如果你在后續(xù)代碼中創(chuàng)建了新的 logger,它們也會(huì)被包括在內(nèi)。

如果你想獲取每個(gè) logger 對(duì)象本身,而不僅僅是名稱(chēng),你可以使用 logging.getLogger(logger_name) 方法:

import logging
# 獲取所有已經(jīng)存在的 logger 名稱(chēng)
existing_loggers = logging.Logger.manager.loggerDict.keys()
# 獲取每個(gè) logger 對(duì)象本身
loggers = [logging.getLogger(logger_name) for logger_name in existing_loggers]
# 打印每個(gè) logger 對(duì)象
for logger in loggers:
    print(logger)

這樣,你就可以獲取到所有已創(chuàng)建的 logger 對(duì)象。

以上就是python關(guān)于第三方日志的QA記錄詳解的詳細(xì)內(nèi)容,更多關(guān)于python第三方日志QA記錄的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python數(shù)字類(lèi)型math庫(kù)原理解析

    python數(shù)字類(lèi)型math庫(kù)原理解析

    這篇文章主要介紹了python數(shù)字類(lèi)型math庫(kù)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python之while循環(huán)、無(wú)限循環(huán)用法及說(shuō)明

    python之while循環(huán)、無(wú)限循環(huán)用法及說(shuō)明

    這篇文章主要介紹了python之while循環(huán)、無(wú)限循環(huán)用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python八個(gè)自動(dòng)化辦公的技巧

    Python八個(gè)自動(dòng)化辦公的技巧

    這篇文章主要介紹了幾個(gè)Python自動(dòng)化辦公的技巧,可以大大提高工作效率,例如:Word文檔doc轉(zhuǎn)docx、Excel文件批量合并、Word文件批量轉(zhuǎn)pdf等,需要的可以參考一下
    2022-01-01
  • Python虛擬環(huán)境virtualenv安裝的詳細(xì)教程保姆級(jí)(Windows和linux)

    Python虛擬環(huán)境virtualenv安裝的詳細(xì)教程保姆級(jí)(Windows和linux)

    本文詳細(xì)介紹了如何在Linux和Windows系統(tǒng)上安裝和配置virtualenv虛擬環(huán)境,包括依賴包安裝、系統(tǒng)環(huán)境變量設(shè)置、激活和退出環(huán)境,以及在PyCharm中的應(yīng)用和導(dǎo)出依賴文件,需要的朋友可以參考下
    2024-09-09
  • 關(guān)于python變量的引用以及在底層存儲(chǔ)原理

    關(guān)于python變量的引用以及在底層存儲(chǔ)原理

    Python的變量,簡(jiǎn)單來(lái)說(shuō)有數(shù)值型,布爾型,字符串類(lèi)型,列表,元組,字典等6大類(lèi)。那么不同變量類(lèi)型在底層是如何存儲(chǔ)的,關(guān)系到變量的引用,能否正確的掌握變量的相關(guān)操作?接下來(lái)小編就來(lái)為大家講解python變量的引用以及在底層存儲(chǔ)原理,需要的朋友可以參考一下
    2021-09-09
  • Python基于有道實(shí)現(xiàn)英漢字典功能

    Python基于有道實(shí)現(xiàn)英漢字典功能

    這篇文章主要介紹了Python基于有道實(shí)現(xiàn)英漢字典功能的方法,通過(guò)調(diào)用有道查詢接口實(shí)現(xiàn)英漢字典功能,簡(jiǎn)單實(shí)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Python?NumPy隨機(jī)抽模塊介紹及方法

    Python?NumPy隨機(jī)抽模塊介紹及方法

    這篇文章主要介紹了Python?NumPy隨機(jī)抽模塊介紹及方法,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-09-09
  • python中單例常用的幾種實(shí)現(xiàn)方法總結(jié)

    python中單例常用的幾種實(shí)現(xiàn)方法總結(jié)

    Python 的模塊就是天然的單例模式,下面這篇文章主要給大家介紹了關(guān)于python中單例常用的幾種實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python單例具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們一起來(lái)看看吧
    2018-10-10
  • Python+Kepler.gl實(shí)現(xiàn)時(shí)間輪播地圖過(guò)程解析

    Python+Kepler.gl實(shí)現(xiàn)時(shí)間輪播地圖過(guò)程解析

    這篇文章主要介紹了Python+Kepler.gl實(shí)現(xiàn)時(shí)間輪播地圖過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • python基于plotly實(shí)現(xiàn)畫(huà)餅狀圖代碼實(shí)例

    python基于plotly實(shí)現(xiàn)畫(huà)餅狀圖代碼實(shí)例

    這篇文章主要介紹了python基于plotly實(shí)現(xiàn)畫(huà)餅狀圖代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評(píng)論