|
@@ -0,0 +1,80 @@
|
|
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
|
|
+"""
|
|
|
|
|
+-------------------------------------------------
|
|
|
|
|
+ File Name: LogHandler.py
|
|
|
|
|
+ Description :
|
|
|
|
|
+ Author : JHao
|
|
|
|
|
+ date: 2017/3/6
|
|
|
|
|
+-------------------------------------------------
|
|
|
|
|
+ Change Activity:
|
|
|
|
|
+ 2017/3/6: log handler
|
|
|
|
|
+-------------------------------------------------
|
|
|
|
|
+"""
|
|
|
|
|
+__author__ = 'JHao'
|
|
|
|
|
+
|
|
|
|
|
+import logging
|
|
|
|
|
+
|
|
|
|
|
+from logging.handlers import TimedRotatingFileHandler
|
|
|
|
|
+
|
|
|
|
|
+# 日志级别
|
|
|
|
|
+CRITICAL = 50
|
|
|
|
|
+FATAL = CRITICAL
|
|
|
|
|
+ERROR = 40
|
|
|
|
|
+WARNING = 30
|
|
|
|
|
+WARN = WARNING
|
|
|
|
|
+INFO = 20
|
|
|
|
|
+DEBUG = 10
|
|
|
|
|
+NOTSET = 0
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class LogHandler(logging.Logger):
|
|
|
|
|
+ """
|
|
|
|
|
+ LogHandler
|
|
|
|
|
+ """
|
|
|
|
|
+
|
|
|
|
|
+ def __init__(self, name, level=DEBUG):
|
|
|
|
|
+ self.name = name
|
|
|
|
|
+ self.level = level
|
|
|
|
|
+ logging.Logger.__init__(self, self.name, level=level)
|
|
|
|
|
+ self.__setFileHandler__()
|
|
|
|
|
+ self.__setStreamHandler__()
|
|
|
|
|
+
|
|
|
|
|
+ def __setFileHandler__(self, level=None):
|
|
|
|
|
+ """
|
|
|
|
|
+ set file handler
|
|
|
|
|
+ :param level:
|
|
|
|
|
+ :return:
|
|
|
|
|
+ """
|
|
|
|
|
+ file_name = '../log/%s' % self.name
|
|
|
|
|
+ # 设置日志回滚, 保存在log目录, 一天保存一个文件, 保留15天
|
|
|
|
|
+ file_handler = TimedRotatingFileHandler(filename=file_name, when='D', interval=1, backupCount=15)
|
|
|
|
|
+ file_handler.suffix = '%Y%m%d.log'
|
|
|
|
|
+ if not level:
|
|
|
|
|
+ file_handler.setLevel(self.level)
|
|
|
|
|
+ else:
|
|
|
|
|
+ file_handler.setLevel(level)
|
|
|
|
|
+ formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
|
|
|
|
|
+
|
|
|
|
|
+ file_handler.setFormatter(formatter)
|
|
|
|
|
+ self.addHandler(file_handler)
|
|
|
|
|
+
|
|
|
|
|
+ def __setStreamHandler__(self, level=None):
|
|
|
|
|
+ """
|
|
|
|
|
+ set stream handler
|
|
|
|
|
+ :param level:
|
|
|
|
|
+ :return:
|
|
|
|
|
+ """
|
|
|
|
|
+ stream_handler = logging.StreamHandler()
|
|
|
|
|
+ formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
|
|
|
|
|
+ stream_handler.setFormatter(formatter)
|
|
|
|
|
+ if not level:
|
|
|
|
|
+ stream_handler.setLevel(self.level)
|
|
|
|
|
+ else:
|
|
|
|
|
+ stream_handler.setLevel(level)
|
|
|
|
|
+ self.addHandler(stream_handler)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+if __name__ == '__main__':
|
|
|
|
|
+ # log = get_logger("aa")
|
|
|
|
|
+ # log.error("aa")
|
|
|
|
|
+ pass
|