亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python的logging模塊基本用法

 更新時(shí)間:2020年12月24日 17:25:12   作者:何雨龍  
這篇文章主要介紹了Python的logging模塊基本用法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

在服務(wù)器部署時(shí),往往都是在后臺(tái)運(yùn)行。當(dāng)程序發(fā)生特定的錯(cuò)誤時(shí),我希望能夠在日志中查詢。因此這里熟悉以下 logging 模塊的用法。

logging 模塊定義了報(bào)告錯(cuò)誤和狀態(tài)信息的標(biāo)準(zhǔn) API。

logging 的組件

日志系統(tǒng)有 4 個(gè)相互交互的組件。我們需要使用 Logger 實(shí)例來(lái)向日志添加信息。觸發(fā)日志會(huì)創(chuàng)建一個(gè) LogRecord,用于內(nèi)存中存儲(chǔ)信息。Logger 可能有很多 Handler 對(duì)象,用于接收和處理日志記錄。Handler 使用 Formatter 來(lái)輸出日志記錄。

向文件輸入日志

大多數(shù)應(yīng)用都是把日志輸入到文件。使用 basicConfig() 函數(shù)可以設(shè)置默認(rèn)的 handler,讓日志輸入到文件。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging

LOG_FILENAME = 'log.txt'
logging.basicConfig(
  filename=LOG_FILENAME,
  level=logging.DEBUG,
)

logging.debug('hello logging!')

with open(LOG_FILENAME, 'rt') as f:
  body = f.read()

print('FILE: ')
print(body)

運(yùn)行腳本后輸出如下:

FILE:
DEBUG:root:hello logging!

日志文件的循環(huán)

要讓每次程序運(yùn)行時(shí),生成一個(gè)新的文件,需要向 basicConfig() 傳一個(gè)值為 w 的 filemode 參數(shù)。還有一個(gè)更方便的方法,就是使用 RotatingFileHandler,可以同時(shí)自動(dòng)創(chuàng)建文件和保存舊文件。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import glob
import logging.handlers

LOG_FILENAME = 'log.txt'

my_logger = logging.getLogger('SpecificLogger')
my_logger.setLevel(logging.DEBUG)

# Add the log message handler to the logger
handler = logging.handlers.RotatingFileHandler(
  LOG_FILENAME,
  maxBytes=20,
  backupCount=5,
)
my_logger.addHandler(handler)

# Log some messages
for i in range(20):
  my_logger.debug(f'i = {i}')

# See what files are created
log_files = glob.glob(f'{LOG_FILENAME}*')
for filename in sorted(log_files):
  print(filename)

運(yùn)行腳本后輸出如下:

log.txt
log.txt.1
log.txt.2
log.txt.3
log.txt.4
log.txt.5

可以返現(xiàn),log.txt 存儲(chǔ)的都是最新的內(nèi)容,logging 會(huì)自動(dòng)地對(duì)這些文件進(jìn)行重命名。 

信息顯示的級(jí)別

logging 有不同的日志級(jí)別。

級(jí)別(level) 值(value)
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
UNSET 0

日志可以只在某一級(jí)別之上的情況才會(huì)觸發(fā)。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging
import sys

level = int(sys.argv[1])
logging.basicConfig(
  level=level
)

logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
$ python logging_level.py 10
DEBUG:root:debug message
INFO:root:info message
WARNING:root:warning message
ERROR:root:error message
CRITICAL:root:critical message
$ python logging_level 40
ERROR:root:error message
CRITICAL:root:critical message

命名 logging 實(shí)例

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging

logging.basicConfig(
  level=logging.WARNING
)

logger1 = logging.getLogger('package1.module1')
logger2 = logging.getLogger('package2.module2')

logger1.warning('hello 1')
logger2.warning('hello 2')

運(yùn)行腳本后輸出:

WARNING:package1.module1:hello 1
WARNING:package2.module2:hello 2

以上就是Python的logging模塊基本用法的詳細(xì)內(nèi)容,更多關(guān)于Python logging模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python如何實(shí)現(xiàn)向上取整

    python如何實(shí)現(xiàn)向上取整

    這篇文章主要介紹了python如何實(shí)現(xiàn)向上取整問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • python3中的eval和exec的區(qū)別與聯(lián)系

    python3中的eval和exec的區(qū)別與聯(lián)系

    這篇文章主要介紹了python3中的eval和exec的區(qū)別與聯(lián)系,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 比較詳細(xì)Python正則表達(dá)式操作指南(re使用)

    比較詳細(xì)Python正則表達(dá)式操作指南(re使用)

    Python 1.5之前版本則是通過(guò) regex 模塊提供 Emecs 風(fēng)格的模式。Emacs 風(fēng)格模式可讀性稍差些,而且功能也不強(qiáng),因此編寫新代碼時(shí)盡量不要再使用 regex 模塊,當(dāng)然偶爾你還是可能在老代碼里發(fā)現(xiàn)其蹤影
    2008-09-09
  • Python實(shí)現(xiàn)刪除時(shí)保留特定文件夾和文件的示例

    Python實(shí)現(xiàn)刪除時(shí)保留特定文件夾和文件的示例

    下面小編就為大家分享一篇Python實(shí)現(xiàn)刪除時(shí)保留特定文件夾和文件的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • matplotlib?雙y軸繪制及合并圖例的實(shí)現(xiàn)代碼

    matplotlib?雙y軸繪制及合并圖例的實(shí)現(xiàn)代碼

    這篇文章主要介紹了matplotlib?雙y軸繪制及合并圖例,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • python使用SMTP發(fā)送qq或sina郵件

    python使用SMTP發(fā)送qq或sina郵件

    這篇文章主要為大家詳細(xì)介紹了python使用SMTP發(fā)送qq或sina郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • django 創(chuàng)建過(guò)濾器的實(shí)例詳解

    django 創(chuàng)建過(guò)濾器的實(shí)例詳解

    這篇文章主要介紹了django 創(chuàng)建過(guò)濾器的實(shí)例詳解的相關(guān)資料,主要說(shuō)明django 創(chuàng)建過(guò)濾器來(lái)統(tǒng)一處理字符串,需要的朋友可以參考下
    2017-08-08
  • python列表添加元素append(),extend(),insert(),+list的區(qū)別及說(shuō)明

    python列表添加元素append(),extend(),insert(),+list的區(qū)別及說(shuō)明

    這篇文章主要介紹了python列表添加元素append(),extend(), insert(),+list的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 詳解Python類和對(duì)象內(nèi)容

    詳解Python類和對(duì)象內(nèi)容

    Python遵循面向?qū)ο蟮木幊谭妒健K幚砺暶鱬ython類,從它們創(chuàng)建對(duì)象并與用戶交互。在面向?qū)ο蟮恼Z(yǔ)言中,程序被分成獨(dú)立的對(duì)象,或者你可以說(shuō)成幾個(gè)小程序。每個(gè)對(duì)象代表應(yīng)用程序的不同部分,它們可以相互通信。類是對(duì)客觀世界中事物得抽象,而對(duì)象是類實(shí)例化后的實(shí)體
    2021-06-06
  • 淺談Pycharm調(diào)用同級(jí)目錄下的py腳本bug

    淺談Pycharm調(diào)用同級(jí)目錄下的py腳本bug

    今天小編就為大家分享一篇淺談Pycharm調(diào)用同級(jí)目錄下的py腳本bug,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論