學習python語言-----logging模塊(轉 記錄與學習)
阿新 • • 發佈:2018-09-17
配置日誌 deb log form struct handler gin eno formatter
一、靈活配置日誌輸出
import logging logging.basicConfig(level=logging.DEBUG, format=‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘, datefmt=‘%a, %d %b %Y %H:%M:%S‘, filename=‘/tmp/test.log‘, #若無此項,則默認輸出於控制臺 filemode=‘w‘) #w用於刷新紀錄,a用於增加記錄,默認為a
#5個日誌記錄級別 logging.debug(‘debug message‘) logging.info(‘info message‘) logging.warning(‘warning message‘) logging.error(‘error message‘) logging.critical(‘critical message‘)
二、使用logger對象
import logging logger = logging.getLogger() # 創建一個handler,用於寫入日誌文件 fh = logging.FileHandler(‘test.log‘) # 再創建一個handler,用於輸出到控制臺 ch = logging.StreamHandler() formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘) fh.setFormatter(formatter) ch.setFormatter(formatter) logger.addHandler(fh) #logger對象可以添加多個fh和ch對象 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‘)
二、應用logger,創建一個封裝好了的函數
import os import time import logging from config import settings def get_logger(card_num, struct_time): if struct_time.tm_mday < 23: file_name = "%s_%s_%d" %(struct_time.tm_year, struct_time.tm_mon, 22) else: file_name = "%s_%s_%d" %(struct_time.tm_year, struct_time.tm_mon+1, 22) file_handler = logging.FileHandler( os.path.join(settings.USER_DIR_FOLDER, card_num, ‘record‘, file_name), encoding=‘utf-8‘ ) fmt = logging.Formatter(fmt="%(asctime)s : %(message)s") file_handler.setFormatter(fmt) logger1 = logging.Logger(‘user_logger‘, level=logging.INFO) logger1.addHandler(file_handler) return logger1
可以直接進行調用,這個針對的是銀行日誌記錄
logger = get_logger()
logger.info(‘spend %s $‘%52)
學習python語言-----logging模塊(轉 記錄與學習)