在前段时间,为了给项目中加入日志功能,就想到了 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‘ #你存放日志的路径
时间: 2024-10-07 05:30:05