1 # -*- coding: utf-8 -*-
2
3 import os
4 import logging
5 from logging import handlers
6
7
8 class Logger(object):
9 level_relations = {
10 'debug': logging.DEBUG,
11 'info': logging.INFO,
12 'warning': logging.WARNING,
13 'error': logging.ERROR,
14 'crit': logging.CRITICAL
15 } # 日志级别关系映射
16
17 def __init__(self, filedir, filename, level='debug', when='midnight', backCount=0,
18 fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'):
19
20 filedir = filedir + "\\logs" # 在指定路径创建日志文件夹logs
21 if not os.path.exists(filedir):
22 os.mkdir(filedir)
23 filename = filedir + "\\" + filename
24 self.logger = logging.getLogger(filename)
25 format_str = logging.Formatter(fmt) # 设置日志格式
26 self.logger.setLevel(self.level_relations.get(level)) # 设置日志最小级别
27 sh = logging.StreamHandler() # 往屏幕上输出
28 sh.setFormatter(format_str) # 设置屏幕上显示的格式
29 th = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=backCount,
30 encoding='utf-8') # 往文件里写入#指定间隔时间自动生成文件的处理器
31 '''
32 实例化TimedRotatingFileHandler
33 interval是时间间隔,backupCount是备份文件的个数,如果超过这个个数,就会自动删除,when是间隔的时间单位,单位有以下几种:
34 S 秒
35 M 分
36 H 小时、
37 D 天、
38 W 每星期(interval==0时代表星期一)
39 midnight 每天凌晨
40 '''
41 th.setFormatter(format_str) # 设置文件里写入的格式
42 th.suffix = "%Y%m%d_%H%M%S.log" # 设置日志文件后缀,以当前时间作为日志文件后缀名
43 self.logger.addHandler(sh) # 把对象加到logger里
44 self.logger.addHandler(th)
45
46
47 if __name__ == '__main__':
48 log = Logger(os.getcwd(), "all.log", level='debug')
49 log.logger.debug('debug')
50 log.logger.info('info')
51 log.logger.warning('警告')
52 log.logger.error('报错')
53 log.logger.critical('严重')
转载自:https://www.cnblogs.com/lanyinhao/p/10797610.html