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

python 日志模塊logging的使用場景及示例

 更新時間:2021年01月04日 08:55:36   作者:HUNY  
這篇文章主要介紹了python 日志模塊logging的使用場景及示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

前言

日志是對于軟件執(zhí)行所發(fā)生的事件的一種追蹤記錄方式。日常使用過程中對代碼執(zhí)行的錯誤和問題會進(jìn)行查看日志來分析定位問題所在。平常編寫代碼以及調(diào)試也經(jīng)常用到。通常的新手的做法是直接print打印,但是打印的結(jié)果只在控制臺顯示。今天我們學(xué)習(xí)一種高級的日志打印和記錄模塊logging。

logging提供了一系列的函數(shù),它們是debug(), info(), warning(), error(), 和critical()。

他們的使用場景請看下表

你想要執(zhí)行的任務(wù) 此任務(wù)的最好的工具
對于命令行或程序的應(yīng)用,結(jié)果顯示在控制臺。 print()
在對程序的普通操作發(fā)生時提交事件報告(比如:狀態(tài)監(jiān)控和錯誤調(diào)查) logging.info() 函數(shù)(當(dāng)有診斷目的需要詳細(xì)輸出信息時使用 logging.debug() 函數(shù))
提出一個警告信息基于一個特殊的運行時事件 warnings.warn()位于代碼庫中,該事件是可以避免的,需要修改客戶端應(yīng)用以消除告警logging.warning() 不需要修改客戶端應(yīng)用,但是該事件還是需要引起關(guān)注
對一個特殊的運行時事件報告錯誤 引發(fā)異常
報告錯誤而不引發(fā)異常(如在長時間運行中的服務(wù)端進(jìn)程的錯誤處理) logging.error(), logging.exception() 或 logging.critical()分別適用于特定的錯誤及應(yīng)用領(lǐng)域

日志功能分別對各種事件和嚴(yán)重性都進(jìn)行分級。

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

示例

簡單示例

因為是python自帶的所以無需安裝,默認(rèn)的級別是WARNING,所以下面只顯示一條warning信息。

import logging
logging.warning('this is warning')
logging.info('this is info')

更改級別

我們將默認(rèn)的級別改成最低級別,則會打印同級別以及高級別的日志信息

import logging 
logging.basicConfig(level=logging.DEBUG)
logging.debug('this is debug')
logging.info('this is info')
logging.warning('this is warning')
logging.error('this is error')

保存日志

只是打印到控制臺對于少量信息倒是可控,但是信息量大的時候就不方便查找了。那么我們需要將其保存到文件中。

import logging 
logging.basicConfig(level=logging.DEBUG,filename='log.log',format='%(asctime)s - %(lineno)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
logger.debug('this is debug')
logger.info('this is info')
logger.warning('this is warning')
logger.error('this is error')

上面我們在保存的時候,同時還添加了其他描述信息,比如執(zhí)行時間,執(zhí)行代碼行數(shù),日志級別,打印消息。當(dāng)然方法遠(yuǎn)不止這些,具體請看下表

屬性名稱 格式 描述
ARGS 你不需要自己設(shè)置格式。 參數(shù)元組被合并到msg中以產(chǎn)生消息,或者其值被用于合并的詞典(當(dāng)只有一個參數(shù)時,它是一個字典)。
asctime %(asctime)類 創(chuàng)建時的可讀時間。默認(rèn)情況下,這是'2003-07-08 16:49:45,896'的格式(逗號之后的數(shù)字是毫秒部分)。
created %(created)的F 創(chuàng)建的時間(由time.time()返回)。
exc_info 你不需要自己設(shè)置格式。 異常元組(àla sys.exc_info)或,如果沒有發(fā)生異常,則為無。
filename %(filename)類 路徑名的文件名部分。
funcName %(funcName)類 包含日志記錄調(diào)用的函數(shù)的名稱。
levelname %(levelname)■ 文本消息級別('DEBUG','INFO','WARNING','ERROR','CRITICAL')。
levelno %(levelno)s 消息的數(shù)字記錄級別(DEBUG,INFO,WARNING,ERROR,CRITICAL)。
lineno %(lineno)d 發(fā)出日志記錄調(diào)用的源行號。
module %(module)類 模塊(文件名稱部分)。
msecs %(msecs)d 創(chuàng)建時的毫秒部分。
message %(message)類 記錄的消息,計算為msg%args。這是在調(diào)用Formatter.format()時設(shè)置的。
msg 你不需要自己設(shè)置格式。 在原始日志記錄調(diào)用中傳遞的格式字符串。與args合并生成消息或任意對象(請參閱使用任意對象作為消息)。
name %(name)類 用于記錄呼叫的記錄器的名稱。
pathname %(filename)類 發(fā)出日志記錄調(diào)用的源文件的完整路徑名。
process %(process)d 進(jìn)程ID。
processName %(processName)類 進(jìn)程名稱。
relativeCreated %(relativeCreated)d 相對于加載日志記錄模塊的時間,LogRecord創(chuàng)建時的時間(以毫秒為單位)。
thread %(thread)d 線程ID。
threadName %(threadName)類 線程名稱。

日志輸出進(jìn)階

首先了解以下進(jìn)階的方法的說明:

StreamHandler 類位于核心 logging 包,它可將日志記錄輸出發(fā)送到數(shù)據(jù)流例如 sys.stdout, sys.stderr 或任何文件類對象(或者更精確地說,任何支持 write() 和 flush() 方法的對象

FileHandler 類位于核心 logging 包,它可將日志記錄輸出到磁盤文件中。 它從 StreamHandler 繼承了輸出功能。

我們需要通過調(diào)用 Logger 類(以下稱為 loggers , 記錄器)的實例來執(zhí)行日志記錄。

Logger 對象有三個常見的方法:

  • Logger.setLevel() 指定記錄器將處理的最低嚴(yán)重性日志消息,其中 debug 是最低內(nèi)置嚴(yán)重性級別, critical 是最高內(nèi)置嚴(yán)重性級別。 例如,如果嚴(yán)重性級別為 INFO ,則記錄器將僅處理 INFO 、 WARNING 、 ERROR 和 CRITICAL 消息,并將忽略 DEBUG 消息。
  • Logger.addHandler() 和 Logger.removeHandler() 從記錄器對象中添加和刪除處理程序?qū)ο?。處理程序在以下?nèi)容中有更詳細(xì)的介紹 處理程序 。
  • Logger.addFilter() 和 Logger.removeFilter() 可以添加或移除記錄器對象中的過濾器。 Filter 對象 包含更多的過濾器細(xì)節(jié)。

下面示例采用添加日志記錄器對象輸出和上面一樣在控制臺打印

import logging
 
logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)
handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(lineno)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
 
logger.info('This is a log info')
logger.debug('Debugging')
logger.warning('Warning exists')
logger.info('Finish')

當(dāng)然也同樣能保存到文件,為了演示修改了文件名稱為put.log

import logging
 
logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)
handler = logging.FileHandler('put.log')
formatter = logging.Formatter('%(asctime)s - %(lineno)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
 
 
logger.info('This is a log info')
logger.debug('Debugging')
logger.warning('Warning exists')
logger.info('Finish')

日志雙向輸出

import logging

logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)
handler1 = logging.FileHandler('output.log')
handler2 = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(lineno)s - %(levelname)s - %(message)s')
handler1.setFormatter(formatter)
handler2.setFormatter(formatter)
logger.addHandler(handler1)
logger.addHandler(handler2)

logger.info('This is a log info')
logger.debug('Debugging')
logger.warning('Warning exists')
logger.info('Finish')

以上就是python 日志模塊logging的使用場景及示例的詳細(xì)內(nèi)容,更多關(guān)于python 日志模塊logging的使用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python實現(xiàn)Kerberos用戶的增刪改查操作

    Python實現(xiàn)Kerberos用戶的增刪改查操作

    這篇文章主要介紹了Python實現(xiàn)Kerberos用戶的增刪改查操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • python jieba庫的基本使用

    python jieba庫的基本使用

    這篇文章主要介紹了python jieba庫的基本使用,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python正則獲取、過濾或者替換HTML標(biāo)簽的方法

    Python正則獲取、過濾或者替換HTML標(biāo)簽的方法

    這篇文章主要介紹了Python通過正則表達(dá)式獲取、過濾或者替換HTML標(biāo)簽的方法,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Python?Matplotlib繪制箱線圖boxplot()函數(shù)詳解

    Python?Matplotlib繪制箱線圖boxplot()函數(shù)詳解

    箱線圖一般用來展現(xiàn)數(shù)據(jù)的分布(如上下四分位值、中位數(shù)等),同時也可以用箱線圖來反映數(shù)據(jù)的異常情況,下面這篇文章主要給大家介紹了關(guān)于Python?Matplotlib繪制箱線圖boxplot()函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 利用Python進(jìn)行數(shù)據(jù)可視化的實例代碼

    利用Python進(jìn)行數(shù)據(jù)可視化的實例代碼

    數(shù)據(jù)可視化和數(shù)據(jù)挖掘都是探索數(shù)據(jù)和分析數(shù)據(jù)的一種手段,下面這篇文章主要給大家介紹了關(guān)于如何利用Python進(jìn)行數(shù)據(jù)可視化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • 深入講解Python中的上下文管理器和with語句

    深入講解Python中的上下文管理器和with語句

    這篇文章主要為大家介紹了Python中的上下文管理器和with語句的深入講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 如何使用Python進(jìn)行數(shù)據(jù)分析之方差分析詳解

    如何使用Python進(jìn)行數(shù)據(jù)分析之方差分析詳解

    這篇文章主要給大家介紹了關(guān)于如何使用Python進(jìn)行數(shù)據(jù)分析之方差分析的相關(guān)資料,方差分析是一種常用的對數(shù)據(jù)進(jìn)行分析的方法,用于兩個及兩個以上樣本均數(shù)和方差差別的顯著性檢驗,需要的朋友可以參考下
    2024-03-03
  • python打印當(dāng)前文件的絕對路徑并解決打印為空的問題

    python打印當(dāng)前文件的絕對路徑并解決打印為空的問題

    這篇文章主要介紹了python打印當(dāng)前文件的絕對路徑并解決打印為空的問題,文中補充介紹了python中對文件路徑的獲取方法,需要的朋友可以參考下
    2023-03-03
  • python實現(xiàn)時間o(1)的最小棧的實例代碼

    python實現(xiàn)時間o(1)的最小棧的實例代碼

    這篇文章主要介紹了python實現(xiàn)時間o(1)的最小棧的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Python面向?qū)ο蟮膬?nèi)置方法梳理講解

    Python面向?qū)ο蟮膬?nèi)置方法梳理講解

    面向?qū)ο缶幊淌且环N編程方式,此編程方式的落地需要使用“類”和 “對象”來實現(xiàn),所以,面向?qū)ο缶幊唐鋵嵕褪菍?nbsp;“類”和“對象” 的使用,今天給大家介紹下python 面向?qū)ο箝_發(fā)及基本特征,感興趣的朋友一起看看吧
    2022-10-10

最新評論