log.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import logging
  2. import os
  3. logger = None
  4. class Logger:
  5. _instance = None
  6. def __new__(cls, log_file):
  7. if cls._instance is None:
  8. cls._instance = super(Logger, cls).__new__(cls)
  9. cls._instance._initialize_logger(log_file)
  10. return cls._instance
  11. def _initialize_logger(self, log_file):
  12. # 确保日志目录存在
  13. os.makedirs(os.path.dirname(log_file), exist_ok=True)
  14. # 设置日志格式
  15. formatter = logging.Formatter(
  16. "[%(asctime)s] - [%(levelname)s] - [%(filename)s] [line:%(lineno)d] - [%(message)s]"
  17. )
  18. # 创建文件处理器
  19. file_handler = logging.FileHandler(log_file, mode='a', encoding='utf-8')
  20. file_handler.setFormatter(formatter)
  21. # 创建控制台处理器
  22. stream_handler = logging.StreamHandler()
  23. stream_handler.setFormatter(formatter)
  24. # 配置日志记录器
  25. self.logger = logging.getLogger()
  26. self.logger.setLevel(logging.DEBUG)
  27. self.logger.addHandler(file_handler)
  28. self.logger.addHandler(stream_handler)
  29. def debug(self, message):
  30. """记录调试信息"""
  31. self.logger.debug(message)
  32. def info(self, message):
  33. """记录普通信息"""
  34. self.logger.info(message)
  35. def warning(self, message):
  36. """记录警告信息"""
  37. self.logger.warning(message)
  38. def error(self, message):
  39. """记录错误信息"""
  40. self.logger.error(message)
  41. def critical(self, message):
  42. """记录严重错误信息"""
  43. self.logger.critical(message)
  44. def get_logger(log_path):
  45. """
  46. 返回已配置的全局日志记录器。
  47. """
  48. global logger
  49. if not logger:
  50. logger = Logger(log_path).logger
  51. return logger
  52. # 使用示例
  53. if __name__ == "__main__":
  54. path = "/home/kevin/kevin/zhaoyuan/evaluate_zhaoyuan/log"
  55. log = Logger()
  56. log.info("程序开始运行")
  57. log.debug("这是一个调试消息")
  58. log.warning("这是一个警告消息")
  59. log.error("这是一个错误消息")
  60. log.critical("这是一个严重错误消息")