Python基础学习八 写日志

 1 import logging
 2 from logging import handlers
 3 
 4 
 5 class Logger(object):
 6     level_relations = {
 7         'debug': logging.DEBUG,
 8         'info': logging.INFO,
 9         'warning': logging.WARN,
10         'error': logging.ERROR,
11         'crit': logging.CRITICAL
12     }  # 日志级别关系映射
13 
14     def __init__(self, fp, level='debug', when='midnight', interval=1, backCount=5, encoding='utf-8'):
15         '''
16 
17         :param fp:日志文件路径
18         :param level: 日志级别 默认是debug
19         :param when: 分割日志的单位 S 秒、M 分、 H 小时、 D 天、 W 每星期(interval==0时代表星期一)、midnight 每天凌晨
20         :param interval: 时间间隔 默认每天凌晨
21         :param backCount: 备份文件个数 默认5个
22         :param encoding: 日志文件编码
23         '''
24         self.level = self.level_relations.get(level)
25         self.logger = logging.getLogger(fp)
26         self.logger.setLevel(self.level)
27         fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
28         sh = logging.StreamHandler()
29         sh.setFormatter(fmt)
30         sh.setLevel(self.level)
31         th = handlers.TimedRotatingFileHandler(fp, when=when, interval=interval, backupCount=backCount,
32                                                encoding=encoding)
33         th.setFormatter(fmt)
34         th.setLevel(self.level)
35         self.logger.addHandler(th)
36         self.logger.addHandler(sh)
37 
38     def debug(self, msg):
39         self.logger.debug(msg)
40 
41     def info(self, msg):
42         self.logger.info(msg)
43 
44     def warning(self, msg):
45         self.logger.warning(msg)
46 
47     def error(self, msg):
48         self.logger.error(msg)
49 
50     def crit(self, msg):
51         self.logger.critical(msg)
52 
53 
54 if __name__ == '__main__':
55     l = Logger('a.log')  # 实例化
56     l.info('hehehe')  # 调用
57     l.debug('哈哈哈')
58     l.error('xxx')

 

posted on 2018-03-09 09:45  louis_w  阅读(153)  评论(0编辑  收藏  举报

导航