中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中logging模塊的使用方法

發布時間:2020-09-08 14:38:39 來源:億速云 閱讀:175 作者:小新 欄目:開發技術

小編給大家分享一下python中logging模塊的使用方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

默認情況下Python的logging模塊將日志打印到了標準輸出中,且只顯示了大于等于WARNING級別的日志,這說明默認的日志級別設置為WARNING(日志級別等級CRITICAL > ERROR > WARNING > INFO > DEBUG),默認的日志格式為日志級別:Logger名稱:用戶輸出消息。

靈活配置日志級別,日志格式,輸出位置

import logging

file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8',)
logging.basicConfig(
  format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
  datefmt='%Y-%m-%d %H:%M:%S %p',
  handlers=[file_handler,],
  level=logging.ERROR
)

logging.error('你好')

日志切割

import time
import logging
from logging import handlers

sh = logging.StreamHandler()
rh = handlers.RotatingFileHandler('myapp.log', maxBytes=1024,backupCount=5)
fh = handlers.TimedRotatingFileHandler(filename='x2.log', when='s', interval=5, encoding='utf-8')
logging.basicConfig(
  format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
  datefmt='%Y-%m-%d %H:%M:%S %p',
  handlers=[fh,sh,rh],
  level=logging.ERROR
)

for i in range(1,100000):
  time.sleep(1)
  logging.error('KeyboardInterrupt error %s'%str(i))

配置參數

logging.basicConfig()函數中可通過具體參數來更改logging模塊默認行為,可用參數有:

filename:用指定的文件名創建FiledHandler,這樣日志會被存儲在指定的文件中。
filemode:文件打開方式,在指定了filename時使用這個參數,默認值為“a”還可指定為“w”。
format:指定handler使用的日志顯示格式。
datefmt:指定日期時間格式。
level:設置rootlogger(后邊會講解具體概念)的日志級別
stream:用指定的stream創建StreamHandler。可以指定輸出到sys.stderr,sys.stdout或者文件(f=open(‘test.log','w')),默認為sys.stderr。若同時列出了filename和stream兩個參數,則stream參數會被忽略。

format參數中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 數字形式的日志級別
%(levelname)s 文本形式的日志級別
%(pathname)s 調用日志輸出函數的模塊的完整路徑名,可能沒有
%(filename)s 調用日志輸出函數的模塊的文件名
%(module)s 調用日志輸出函數的模塊名
%(funcName)s 調用日志輸出函數的函數名
%(lineno)d 調用日志輸出函數的語句所在的代碼行
%(created)f 當前時間,用UNIX標準的表示時間的浮 點數表示
%(relativeCreated)d 輸出日志信息時的,自Logger創建以 來的毫秒數
%(asctime)s 字符串形式的當前時間。默認格式是 “2003-07-08 16:49:45,896”。逗號后面的是毫秒
%(thread)d 線程ID。可能沒有
%(threadName)s 線程名。可能沒有
%(process)d 進程ID。可能沒有
%(message)s用戶輸出的消息

屬性格式描述
asctime%(asctime)s日志產生的時間,默認格式為2003-07-08 16:49:45,896
created%(created)ftime.time()生成的日志創建時間戳
filename%(filename)s生成日志的程序名
funcName%(funcName)s調用日志的函數名
levelname%(levelname)s日志級別 ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')
levelno%(levelno)s日志級別對應的數值
lineno%(lineno)d日志所針對的代碼行號(如果可用的話)
module%(module)s生成日志的模塊名
msecs%(msecs)d日志生成時間的毫秒部分
message%(message)s具體的日志信息
name%(name)s日志調用者
pathname%(pathname)s生成日志的文件的完整路徑
process%(process)d生成日志的進程ID(如果可用)
processName%(processName)s進程名(如果可用)
thread%(thread)d生成日志的線程ID(如果可用)
threadName%(threadName)s線程名(如果可用)

logger對象配置

針對不同的數據流設置不同的日志級別。

import logging

logger = logging.getLogger()
# 創建一個handler,用于寫入日志文件
fh = logging.FileHandler('test.log',encoding='utf-8')
fh.setLevel(logging.DEBUG)

# 再創建一個handler,用于輸出到控制臺 
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

fh.setFormatter(formatter) 
ch.setFormatter(formatter) 

#logger對象可以添加多個fh和ch對象 
logger.addHandler(fh) 
logger.addHandler(ch) 

logger.debug('logger debug message') 
logger.info('logger info message') 
logger.warning('logger warning message') 
logger.error('logger error message') 
logger.critical('logger critical message')

logging庫提供了多個組件:Logger、Handler、Filter、Formatter。Logger對象提供應用程序可直接使用的接口,Handler發送日志到適當的目的地,Filter提供了過濾日志信息的方法,Formatter指定日志顯示格式。另外,可以通過:logger.setLevel(logging.Debug)設置級別,當然,也可以通過fh.setLevel(logging.Debug)單對文件流設置某個級別。

以上是python中logging模塊的使用方法的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

芮城县| 塔河县| 静乐县| 海安县| 天峻县| 会宁县| 永年县| 志丹县| 庆安县| 民勤县| 滨海县| 凯里市| 酒泉市| 桦南县| 福安市| 织金县| 崇礼县| 页游| 乌兰浩特市| 北碚区| 临洮县| 微博| 麦盖提县| 蒙城县| 阜宁县| 图们市| 高安市| 安吉县| 古交市| 嘉黎县| 澄迈县| 浦城县| 大庆市| 溆浦县| 泰兴市| 申扎县| 龙江县| 舞钢市| 涿州市| 伊川县| 安岳县|