loguru.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import logging
  2. import os
  3. import sys
  4. import loguru
  5. import os
  6. import sys
  7. from pathlib import Path
  8. LOG_LEVEL = 'DEBUG'
  9. LOG_DIR = Path(__file__).resolve().parent.parent/'temp/logs'
  10. # python_xx/site-packages/loguru/_handler.py _serialize_record
  11. FORMAT = '<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{file}:{line}</cyan> :<cyan>{function}</cyan> - {message}'
  12. loguru.logger.remove()
  13. # logger.add(sys.stderr, format='<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>')
  14. # logger.add(sys.stderr, format=FORMAT)
  15. # logger.add(LOG_FILE, format=FORMAT)
  16. if not os.path.exists(LOG_DIR):
  17. os.makedirs(LOG_DIR)
  18. loggers = {}
  19. FORMAT = '<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{file}:{line}</cyan> :<cyan>{function}</cyan> - {message}'
  20. def get_logger(name, console=True, console_level="INFO", file=True, file_level="DEBUG"):
  21. '''
  22. 用法
  23. # 创建普通日志,并且启用控制台输出,默认保存到 {LOG_DIR}/default.log 文件
  24. logger = get_logger("default", console=True)
  25. # 创建特定名称的日志和日志文件,保存到 {LOG_DIR}/斌的世界/gift.log 文件
  26. user_log = get_logger("斌的世界/gift")
  27. # 输出打印测试
  28. user_log.info("将控制台日志器、文件日志器,添加进日志器对象中")
  29. logger.info("这是一条info消息")
  30. '''
  31. global loggers
  32. if name in loggers:
  33. return loggers[name] # 如果已经存在,则直接返回 # 创建用户特定的日志文件
  34. log_file = f"{name}.log"
  35. # 添加日志处理器,过滤出只包含该用户名的日志记录
  36. if file:
  37. loguru.logger.add(LOG_DIR/log_file,level=file_level, format=FORMAT, filter=lambda record: record["extra"].get("name") == name)
  38. if console:
  39. loguru.logger.add(sys.stderr, format=FORMAT,level=console_level, filter=lambda record: record["extra"].get("name") == name)
  40. user_logger = loguru.logger.bind(name=name)
  41. loggers[name] = user_logger
  42. return user_logger
  43. logger = get_logger('main')
  44. if __name__ == '__main__':
  45. user_log = get_logger("斌的世界/gift")
  46. user_log.info("将控制台日志器、文件日志器,添加进日志器对象中")
  47. logger.info("这是一条info消息")