在前段時間,為了給項目中加入日志功能,就想到了 logging 模塊,百度logging一大推,都是各種復制的,並沒有找到自己想要的結果;我的目的很簡單,就是:在把日志寫入文件的同時在控制台輸出,更加方便調試,我下面的代碼就滿足這個功能:
1 #coding=utf-8 2 3 import logging 4 import time 5 import commonparameter 6 7 class Log: 8 def __init__(self): 9 self.logname = commonparameter.log_path + '\\' + 'Log' +time.strftime('%Y-%m-%d') + '.log' 10 11 def printconsole(self, level, message): 12 # 創建一個logger 13 logger = logging.getLogger('mylogger') 14 logger.setLevel(logging.DEBUG) 15 # 創建一個handler,用於寫入日志文件 16 fh = logging.FileHandler(self.logname,'a') 17 fh.setLevel(logging.DEBUG) 18 # 再創建一個handler,用於輸出到控制台 19 ch = logging.StreamHandler() 20 ch.setLevel(logging.DEBUG) 21 # 定義handler的輸出格式 22 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 23 fh.setFormatter(formatter) 24 ch.setFormatter(formatter) 25 # 給logger添加handler 26 logger.addHandler(fh) 27 logger.addHandler(ch) 28 # 記錄一條日志 29 if level == 'info': 30 logger.info(message) 31 elif level == 'debug': 32 logger.debug(message) 33 elif level == 'warning': 34 logger.warning(message) 35 elif level == 'error': 36 logger.error(message) 37 logger.removeHandler(ch) 38 logger.removeHandler(fh) 39 40 def debug(self,message): 41 self.printconsole('debug', message) 42 43 def info(self,message): 44 self.printconsole('info', message) 45 46 def warning(self,message): 47 self.printconsole('warning', message) 48 49 def error(self,message): 50 self.printconsole('error', message) 51 52 if __name__ == '__main__': 53 log = Log() 54 log.info('info msg1000013333') 55 log.debug('debug msg') 56 log.warning('warning msg') 57 log.error('error msg')
ps:
self.logname = commonparameter.log_path + '\\' + 'Log' +time.strftime('%Y-%m-%d') + '.log' #你存放日志的路徑
