LogHandler
| 42 | |
| 43 | |
| 44 | class LogHandler(logging.Logger): |
| 45 | """ |
| 46 | LogHandler |
| 47 | """ |
| 48 | |
| 49 | def __init__(self, name, level=DEBUG, stream=True, file=True): |
| 50 | self.name = name |
| 51 | self.level = level |
| 52 | logging.Logger.__init__(self, self.name, level=level) |
| 53 | if stream: |
| 54 | self.__setStreamHandler__() |
| 55 | if file: |
| 56 | if platform.system() != "Windows": |
| 57 | self.__setFileHandler__() |
| 58 | |
| 59 | def __setFileHandler__(self, level=None): |
| 60 | """ |
| 61 | set file handler |
| 62 | :param level: |
| 63 | :return: |
| 64 | """ |
| 65 | file_name = os.path.join(LOG_PATH, '{name}.log'.format(name=self.name)) |
| 66 | # 设置日志回滚, 保存在log目录, 一天保存一个文件, 保留15天 |
| 67 | file_handler = TimedRotatingFileHandler(filename=file_name, when='D', interval=1, backupCount=15) |
| 68 | file_handler.suffix = '%Y%m%d.log' |
| 69 | if not level: |
| 70 | file_handler.setLevel(self.level) |
| 71 | else: |
| 72 | file_handler.setLevel(level) |
| 73 | formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s') |
| 74 | |
| 75 | file_handler.setFormatter(formatter) |
| 76 | self.file_handler = file_handler |
| 77 | self.addHandler(file_handler) |
| 78 | |
| 79 | def __setStreamHandler__(self, level=None): |
| 80 | """ |
| 81 | set stream handler |
| 82 | :param level: |
| 83 | :return: |
| 84 | """ |
| 85 | stream_handler = logging.StreamHandler() |
| 86 | formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s') |
| 87 | stream_handler.setFormatter(formatter) |
| 88 | if not level: |
| 89 | stream_handler.setLevel(self.level) |
| 90 | else: |
| 91 | stream_handler.setLevel(level) |
| 92 | self.addHandler(stream_handler) |
| 93 | |
| 94 | |
| 95 | if __name__ == '__main__': |
no outgoing calls