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

Python的logging模塊基本用法

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

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

logging 模塊定義了報告錯誤和狀態(tài)信息的標準 API。

logging 的組件

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

向文件輸入日志

大多數應用都是把日志輸入到文件。使用 basicConfig() 函數可以設置默認的 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)

運行腳本后輸出如下:

FILE:
DEBUG:root:hello logging!

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

要讓每次程序運行時,生成一個新的文件,需要向 basicConfig() 傳一個值為 w 的 filemode 參數。還有一個更方便的方法,就是使用 RotatingFileHandler,可以同時自動創(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)

運行腳本后輸出如下:

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

可以返現,log.txt 存儲的都是最新的內容,logging 會自動地對這些文件進行重命名。 

信息顯示的級別

logging 有不同的日志級別。

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

日志可以只在某一級別之上的情況才會觸發(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 實例

#!/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')

運行腳本后輸出:

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

以上就是Python的logging模塊基本用法的詳細內容,更多關于Python logging模塊的資料請關注腳本之家其它相關文章!

相關文章

  • python如何實現向上取整

    python如何實現向上取整

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

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

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

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

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

    Python實現刪除時保留特定文件夾和文件的示例

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

    matplotlib?雙y軸繪制及合并圖例的實現代碼

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

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

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

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

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

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

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

    詳解Python類和對象內容

    Python遵循面向對象的編程范式。它處理聲明python類,從它們創(chuàng)建對象并與用戶交互。在面向對象的語言中,程序被分成獨立的對象,或者你可以說成幾個小程序。每個對象代表應用程序的不同部分,它們可以相互通信。類是對客觀世界中事物得抽象,而對象是類實例化后的實體
    2021-06-06
  • 淺談Pycharm調用同級目錄下的py腳本bug

    淺談Pycharm調用同級目錄下的py腳本bug

    今天小編就為大家分享一篇淺談Pycharm調用同級目錄下的py腳本bug,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12

最新評論