簡單的logging模組呼叫(python)

2021-08-09 11:05:15 字數 3967 閱讀 3542

bashicconfig方法使用logging是比較簡單方便的方法;

分兩步:

申請logger;

logging.basicconfig(level = logging.debug,format = '[%(asctime)s]%(name)s:%(levelname)s:%(message)s'

使用logger;

#message為需要輸出的資訊,該資訊為格式化字串的方式輸出。

logging.debug(message)

3. 測試**
def

test_basicconfig

():'''

測試basicconfig方法對logging進行配置,該方法滿足大多數場景的使用需求

'''logging.basicconfig(level = logging.debug,format = '[%(asctime)s]%(name)s:%(levelname)s:%(message)s'

)for i in range(10):

logging.debug(i)

logger = logging.getlogger(name)

logger.setlevel(logging.debug)

formatter = logging.formatter('[%(asctime)s] %(name)s:'

'%(levelname)s: %(message)s')

建立輸出到控制台的stremhandler;建立輸出到檔案的filehandler;

hdr = logging.streamhandler()

fhr = logging.filehandler('filelog.log')

hdr.setformatter(formatter)

fhr.setformatter(formatter)

logger.addhandler(hdr)

logger.addhandler(fhr)

logger.info(message) #massage為帶輸出的資訊

logger.debug(message)

def

my_log

(name):

''' :param name: 申請logger的名字

:return:申請號的logger

函式用來申請logger,同時返回申請的logger;

申請logger:logger_name = test_logging.my_log('name')

呼叫logger:logger_name.debug('mylog test b: %d'%(b))

'''logger = logging.getlogger(name)

logger.setlevel(logging.debug)

formatter = logging.formatter('[%(asctime)s] %(name)s: %(levelname)s: %(message)s')

#輸出到控制台

hd = logging.streamhandler()

hd.setformatter(formatter)

#輸出到文字

fh = logging.filehandler('logfile.log')

fh.setformatter(formatter)

#增加handler

logger.addhandler(fh)

logger.addhandler(hd)

return logger

import test_logging

#logger申請,注意如果放在迴圈中,會建立多個logger

logger_logb = test_logging.my_log('logb')

logger_logi = test_logging.my_log('logi')

for i in range(10):

a = 0

b = a + i

#logger的使用

logger_logb.debug('mylog test b: %d'

%(b))

logger_logi.info('mylog test i: %d'

%(i))

class

logger

():def

__init__

(self, logname, loglevel, logger):

''' 指定儲存日誌的檔案路徑,日誌級別,以及呼叫檔案

將日誌存入到指定的檔案中

'''# 建立乙個logger

self.logger = logging.getlogger(logger)

self.logger.setlevel(logging.debug)

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

fh = logging.filehandler(logname)

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)

defgetlog

(self):

return self.logger

logger = logger(logname='log.txt', loglevel=1, logger="fox").getlog()
logging.basicconfig函式各引數:

filename: 指定日誌檔名

filemode: 和file函式意義相同,指定日誌檔案的開啟模式,』w』或』a』

format: 指定輸出的格式和內容,format可以輸出很多有用資訊,如上例所示:

%(levelno)s: 列印日誌級別的數值

%(levelname)s: 列印日誌級別名稱

%(pathname)s: 列印當前執行程式的路徑,其實就是sys.argv[0]

%(filename)s: 列印當前執行程式名

%(funcname)s: 列印日誌的當前函式

%(lineno)d: 列印日誌的當前行號

%(asctime)s: 列印日誌的時間

%(thread)d: 列印執行緒id

%(threadname)s: 列印執行緒名稱

%(process)d: 列印程序id

%(message)s: 列印日誌資訊

datefmt: 指定時間格式,同time.strftime()

level: 設定日誌級別,預設為logging.warning

stream: 指定將日誌的輸出流,可以指定輸出到sys.stderr,sys.stdout或者檔案,預設輸出到sys.stderr,當stream和filename同時指定時,stream被忽略

logging模組的簡單使用

import logging 建立乙個logger,如果引數為空則返回root logger logger logging.getlogger nick 設定logger日誌等級 logger.setlevel logging.debug 建立handler fh logging.filehandl...

python的logging模組簡單應用

python3 標準庫自帶logging模組,使用的時候直接引用 寫log import logging 引入logging模組 from logging.handlers import timedrotatingfilehandler import os.path import time 第一步,...

Logging模組的使用

logging模組,針對日誌操作的模組 logging模組可替代print函式的功能,並能將標準輸出輸入到日誌檔案儲存起來 且利用logging模組可部分替代debug功能 logging模組中有6個級別,分別是 notset 0debug 10info 20warning 30error 40cr...