log.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import logging
  2. import os
  3. import time
  4. class logger(object):
  5. """
  6. 终端打印不同颜色的日志,在pycharm中如果强行规定了日志的颜色, 这个方法不会起作用, 但是
  7. 对于终端,这个方法是可以打印不同颜色的日志的。
  8. """
  9. # 在这里定义StreamHandler,可以实现单例, 所有的logger()共用一个StreamHandler
  10. ch = logging.StreamHandler()
  11. def __init__(self):
  12. self.logger = logging.getLogger()
  13. if not self.logger.handlers:
  14. # 如果self.logger没有handler, 就执行以下代码添加handler
  15. self.logger.setLevel(logging.DEBUG)
  16. rootpath =os.path.dirname(os.path.dirname(__file__))
  17. self.log_path = rootpath + '/logs'
  18. if not os.path.exists(self.log_path):
  19. os.makedirs(self.log_path)
  20. # 创建一个handler,用于写入日志文件
  21. fh = logging.FileHandler(self.log_path + '/runlog' + time.strftime("%Y%m%d", time.localtime()) + '.log',
  22. encoding='utf-8')
  23. fh.setLevel(logging.INFO)
  24. # 定义handler的输出格式
  25. formatter = logging.Formatter('[%(asctime)s] - [%(levelname)s] - %(message)s')
  26. fh.setFormatter(formatter)
  27. # 给logger添加handler
  28. self.logger.addHandler(fh)
  29. def debug(self, message):
  30. self.fontColor('\033[0;32m%s\033[0m')
  31. self.logger.debug(message)
  32. def info(self, message):
  33. self.fontColor('\033[0;34m%s\033[0m')
  34. self.logger.info(message)
  35. def warning(self, message):
  36. self.fontColor('\033[0;37m%s\033[0m')
  37. self.logger.warning(message)
  38. def error(self, message):
  39. self.fontColor('\033[0;31m%s\033[0m')
  40. self.logger.error(message)
  41. def critical(self, message):
  42. self.fontColor('\033[0;35m%s\033[0m')
  43. self.logger.critical(message)
  44. def fontColor(self, color):
  45. # 不同的日志输出不同的颜色
  46. formatter = logging.Formatter(color % '[%(asctime)s] - [%(levelname)s] - %(message)s')
  47. self.ch.setFormatter(formatter)
  48. self.logger.addHandler(self.ch)
  49. if __name__ == "__main__":
  50. rootpath = os.path.dirname(os.path.dirname(__file__))
  51. print(rootpath)