log.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. import os
  4. import sys
  5. import time
  6. import logging
  7. import inspect
  8. import datetime
  9. from logging.handlers import RotatingFileHandler
  10. current_path = os.getcwd()
  11. log_dir = os.path.join(current_path, 'gateway-Log')
  12. if not os.path.exists(log_dir):
  13. os.makedirs(log_dir)
  14. handlers = {logging.ERROR: os.path.join(current_path, 'gateway-Log/error.log'),
  15. logging.DEBUG: os.path.join(current_path, 'gateway-Log/debug.log'),
  16. logging.INFO: os.path.join(current_path, 'gateway-Log/info.log')}
  17. def createHandlers():
  18. logLevels = handlers.keys()
  19. for level in logLevels:
  20. path = os.path.abspath(handlers[level])
  21. # 设置写入文件,文件大小超过10M时,切割日志文件,仅保留3个文件
  22. handlers[level] = RotatingFileHandler(filename=path, maxBytes=10*1024*1024, backupCount=3, encoding='utf-8')
  23. # 加载模块时创建全局变量
  24. createHandlers()
  25. class OutPutLog(object):
  26. '''
  27. 该日志类可以把不同级别的日志按照日期输出到不同的日志文件中
  28. '''
  29. def __init__(self, level=logging.NOTSET):
  30. self.__loggers = {}
  31. logLevels = handlers.keys()
  32. for level in logLevels:
  33. logger = logging.getLogger(str(level))
  34. # 如果不指定level,获得的handler似乎是同一个handler?
  35. logger.addHandler(handlers[level])
  36. logger.setLevel(level)
  37. self.__loggers.update({level: logger})
  38. def printfNow(self):
  39. return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
  40. def getLogMessage(self, level, message):
  41. frame, filename, lineNo, functionName, code, unknowField = inspect.stack()[2]
  42. '''日志格式:[时间] 文件路径-日志级别 [行号]: 具体信息'''
  43. res = "[%s] %s-%s [%s]:%s" % (self.printfNow(), filename, level, lineNo, message)
  44. return res
  45. def info(self, message):
  46. message = self.getLogMessage("info", message)
  47. self.__loggers[logging.INFO].info(message)
  48. def error(self, message):
  49. message = self.getLogMessage("error", message)
  50. self.__loggers[logging.ERROR].error(message)
  51. def debug(self, message):
  52. message = self.getLogMessage("debug", message)
  53. self.__loggers[logging.DEBUG].debug(message)