python的日誌模組

2021-09-24 20:16:17 字數 2797 閱讀 7031

'''

date:2019-06-28

autor:wangxc

功能:1.寫日誌功能,當沒有傳入日誌寫入路徑時,他會將 本檔名.log 的日誌檔案存放到指令碼同路徑下

例子:指令碼路徑在c:logger.py,那麼生成的日誌檔案logger.log將會在c:下存在

2.可以傳入日誌的級別,控制日誌輸出的形式,如何配置日誌輸出形式,可以看下面注釋

'''import logging

import os,sys

from logging.handlers import rotatingfilehandler

'''%(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 使用者輸出的訊息

'''#用字典儲存日誌級別 日誌輸出的形式

format_dict =

# 開發乙個日誌系統, 既要把日誌輸出到控制台, 還要寫入日誌檔案

class logger():

def __init__(self, logname, loglevel, logger="logger"):

path = os.path.split(sys.ar**[0])[0]

filename = os.path.split(sys.ar**[0])[-1]

log_file = filename.split(".")[0] + ".log"

#日誌輸出具體路徑

log_path = os.sep.join([path,log_file])

# 建立乙個logger

self.logger = logging.getlogger(logger)

#設定日誌列印的級別

#如果設定成error,則只會列印error日誌資訊

#如果設定成info,則會列印出info和error的日誌資訊

#如果設定成debug,則會列印error,info和error的日誌資訊

self.logger.setlevel(logging.debug)

#判斷日誌路徑,不存在建立

if not os.path.exists(logname):

os.makedirs(logname)

# 建立乙個handler,用於寫入日誌檔案

#fh = logging.filehandler(logname,mode='w',encoding='utf-8')

#fh.setlevel(logging.debug)

# 定義乙個rotatingfilehandler,最多備份5個日誌檔案,每個日誌檔案最大10m

fh = rotatingfilehandler(log_path,encoding='utf-8', maxbytes=1 * 1024 * 1024, backupcount=5)

#控制輸出到日誌檔案的日誌級別

fh.setlevel(logging.debug)

# 再建立乙個handler,用於輸出到控制台

ch = logging.streamhandler()

#控制輸出到控制台的日誌級別

ch.setlevel(logging.debug)

# 定義handler的輸出格式

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

formatter = format_dict[int(loglevel)]

#同時在控制台和日誌中輸出,可以按個人需求修改

fh.setformatter(formatter)

ch.setformatter(formatter)

# 給logger新增handler

self.logger.addhandler(fh)

self.logger.addhandler(ch)

def getlog(self):

return self.logger

if __name__ == '__main__':

#測試logger = logger(logname='c:/users/administrator/desktop/a/', loglevel=1, logger="ww").getlog()

i = 0

while(i<10):

logger.error('this is error')

logger.debug('this is debug')

logger.info('this is info')

i = i + 1

python日誌模組

logging.debug 10 logging.info 20 logging.warning 30 logging.error 40 logging.critical 50預設級別為warning 預設輸出位置為控制台 import logging logging.basicconfig 可用引...

python 日誌模組

在軟體或者系統發生錯誤時可以通過日誌快速定位到錯誤,從而定位問題,解決問題。logging模組提供的日誌記錄函式所使用的日誌器設定的日誌級別是warning,因此只有warning級別的日誌記錄以及大於它的error和critical級別的日誌記錄被輸出了,而小於它的debug和info級別的日誌記...

python日誌模組

python的日誌模組使用logging,如果想要輸出符合自己的預期,需要重新定義,廢話不多說,直接貼 encoding utf 8 from logging.handlers import timedrotatingfilehandler import logging import osimpor...