LogHandler.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # -*- coding: utf-8 -*-
  2. """
  3. -------------------------------------------------
  4. File Name: LogHandler.py
  5. Description :
  6. Author : JHao
  7. date: 2017/3/6
  8. -------------------------------------------------
  9. Change Activity:
  10. 2017/3/6: log handler
  11. -------------------------------------------------
  12. """
  13. __author__ = 'JHao'
  14. import logging
  15. from logging.handlers import TimedRotatingFileHandler
  16. # 日志级别
  17. CRITICAL = 50
  18. FATAL = CRITICAL
  19. ERROR = 40
  20. WARNING = 30
  21. WARN = WARNING
  22. INFO = 20
  23. DEBUG = 10
  24. NOTSET = 0
  25. class LogHandler(logging.Logger):
  26. """
  27. LogHandler
  28. """
  29. def __init__(self, name, level=DEBUG):
  30. self.name = name
  31. self.level = level
  32. logging.Logger.__init__(self, self.name, level=level)
  33. self.__setFileHandler__()
  34. self.__setStreamHandler__()
  35. def __setFileHandler__(self, level=None):
  36. """
  37. set file handler
  38. :param level:
  39. :return:
  40. """
  41. file_name = '../log/%s' % self.name
  42. # 设置日志回滚, 保存在log目录, 一天保存一个文件, 保留15天
  43. file_handler = TimedRotatingFileHandler(filename=file_name, when='D', interval=1, backupCount=15)
  44. file_handler.suffix = '%Y%m%d.log'
  45. if not level:
  46. file_handler.setLevel(self.level)
  47. else:
  48. file_handler.setLevel(level)
  49. formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
  50. file_handler.setFormatter(formatter)
  51. self.addHandler(file_handler)
  52. def __setStreamHandler__(self, level=None):
  53. """
  54. set stream handler
  55. :param level:
  56. :return:
  57. """
  58. stream_handler = logging.StreamHandler()
  59. formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
  60. stream_handler.setFormatter(formatter)
  61. if not level:
  62. stream_handler.setLevel(self.level)
  63. else:
  64. stream_handler.setLevel(level)
  65. self.addHandler(stream_handler)
  66. if __name__ == '__main__':
  67. # log = get_logger("aa")
  68. # log.error("aa")
  69. pass