log.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import os
  2. import sys
  3. import time
  4. import logging
  5. import logging.handlers
  6. import inspect
  7. current_path = os.getcwd() # 获取当前项目路径
  8. log_path = os.path.join(current_path, r'gateway-Log') # 拼接日志文件存储目录
  9. if not os.path.exists(log_path): # 不存在则创建日志文件存储目录
  10. os.mkdir(log_path)
  11. # 创建日志等级和文件映射字典
  12. handlers = {logging.ERROR: os.path.join(log_path, r'log_error.log'),
  13. logging.DEBUG: os.path.join(log_path, r'log_debug.log'),
  14. logging.INFO: os.path.join(log_path, r'log_info.log')}
  15. def createHandlers():
  16. logLevels = handlers.keys()
  17. for level in logLevels:
  18. path = os.path.abspath(handlers[level])
  19. # 设定每个日志文件大小,单位B
  20. logsize = 1024 * 1024 * 20
  21. # 设定保存的日志文件个数
  22. lognum = 50
  23. handlers[level] = logging.handlers.RotatingFileHandler(path, maxBytes=logsize, backupCount=lognum)
  24. # 加载模块时创建全局变量
  25. createHandlers()
  26. class Log(object):
  27. '''
  28. 该日志类可以把不同级别的日志输出到不同的日志文件中
  29. '''
  30. def __init__(self, level=logging.NOTSET):
  31. self.__loggers = {}
  32. logLevels = handlers.keys()
  33. for level in logLevels:
  34. logger = logging.getLogger(str(level))
  35. # 如果不指定level,获得的handler似乎是同一个handler?
  36. logger.addHandler(handlers[level])
  37. logger.setLevel(level)
  38. self.__loggers.update({level: logger})
  39. def printfNow(self):
  40. return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
  41. def getLogMessage(self, level, message):
  42. frame, filename, lineNo, functionName, code, unknowField = inspect.stack()[2]
  43. '''日志格式: [时间] 文件路径-日志级别 [行号]: 具体信息'''
  44. res = "[%s] %s-%s [%s]:%s" % (self.printfNow(), filename, level, lineNo, message)
  45. return res
  46. def info(self, message):
  47. message = self.getLogMessage("info", message)
  48. self.__loggers[logging.INFO].info(message)
  49. def error(self, message):
  50. message = self.getLogMessage("error", message)
  51. self.__loggers[logging.ERROR].error(message)
  52. def debug(self, message):
  53. message = self.getLogMessage("debug", message)
  54. self.__loggers[logging.DEBUG].debug(message)