logger.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import logging
  4. import warnings
  5. from datetime import datetime
  6. from logging.handlers import RotatingFileHandler
  7. from .env import LOG_PATH
  8. from .configParser import config
  9. __all__ = ["logger"]
  10. LOGGER_FOLDER = os.path.join(LOG_PATH, datetime.now().strftime("%Y%m%d%H%M%S"))
  11. LOGGER_MAX_BYTES = 1024 * 1024 * 100
  12. LOGGER_BACKUP_COUNT = 3
  13. LOGGER_FORMAT = "[%(levelname)s]%(asctime)s File '%(filename)s',line %(lineno)s: %(message)s"
  14. def checkLoggerPath():
  15. if not os.path.exists(LOGGER_FOLDER):
  16. os.makedirs(LOGGER_FOLDER, exist_ok=True)
  17. def getLogger(loggerName: str):
  18. checkLoggerPath()
  19. loggerFile = os.path.join(LOGGER_FOLDER, loggerName + "_log.txt")
  20. logger = logging.getLogger(loggerName)
  21. logger.setLevel(logging.DEBUG)
  22. # 日志记录
  23. fileHandler = RotatingFileHandler(
  24. loggerFile,
  25. maxBytes=LOGGER_MAX_BYTES,
  26. backupCount=LOGGER_BACKUP_COUNT,
  27. encoding="utf-8"
  28. )
  29. fileHandler.setLevel(logging.DEBUG)
  30. fileFormatter = logging.Formatter(LOGGER_FORMAT)
  31. fileHandler.setFormatter(fileFormatter)
  32. # 终端显示
  33. streamHander = logging.StreamHandler()
  34. formatter = logging.Formatter(LOGGER_FORMAT)
  35. streamHander.setFormatter(formatter)
  36. # 设置日志等级
  37. if config.COMMON.LOG_LEVEL == "DEBUG":
  38. fileHandler.setLevel(logging.DEBUG)
  39. streamHander.setLevel(logging.DEBUG)
  40. elif config.COMMON.LOG_LEVEL == "INFO":
  41. fileHandler.setLevel(logging.INFO)
  42. streamHander.setLevel(logging.INFO)
  43. elif config.COMMON.LOG_LEVEL == "WARNING":
  44. fileHandler.setLevel(logging.WARNING)
  45. streamHander.setLevel(logging.WARNING)
  46. elif config.COMMON.LOG_LEVEL == "ERROR":
  47. fileHandler.setLevel(logging.ERROR)
  48. streamHander.setLevel(logging.ERROR)
  49. else:
  50. warnings.warn(f"Unknown logging level: {config.COMMON.LOG_LEVEL}, set logging level to DEBUG!")
  51. fileHandler.setLevel(logging.DEBUG)
  52. streamHander.setLevel(logging.DEBUG)
  53. logger.addHandler(fileHandler)
  54. logger.addHandler(streamHander)
  55. return logger
  56. logger = getLogger("system")