logging

utils/log.py

  1. import logging
  2. import os
  3. # 1. 创建一个logger
  4. logger = logging.getLogger('simple_example')
  5. logger.setLevel(logging.DEBUG) # Log等级总开关
  6. # 2.控制台的handler
  7. ch = logging.StreamHandler()
  8. ch.setLevel(logging.DEBUG)
  9. # 3. 写入文件的handler
  10. root_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
  11. fh = logging.FileHandler(filename=os.path.join(root_dir, 'log/run.log'), encoding='utf-8')
  12. # 4. 定义handler的输出格式
  13. format ='%(asctime)s - %(filename)s - %(lineno)d - %(name)s - %(levelname)s - %(message)s'
  14. formatter = logging.Formatter(fmt=format)
  15. ch.setFormatter(formatter)
  16. fh.setFormatter(formatter)
  17. # 将logger添加到handler里面
  18. logger.addHandler(ch)
  19. logger.addHandler(fh)

调用:

  1. import pymysql
  2. from utils.log import logger
  3. logger.error('数据库连接失败')

loguru

utils/Loggings.py

  1. import os
  2. from loguru import logger
  3. class Loggings:
  4. root_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
  5. filename = os.path.join(root_dir, 'log/run.log')
  6. __instance = None
  7. logger.add(
  8. sink=filename, # 写入文件路径
  9. rotation="500MB",
  10. encoding="utf-8",
  11. enqueue=True,
  12. retention="10 days"
  13. )
  14. def __new__(cls, *args, **kwargs):
  15. if not cls.__instance:
  16. cls.__instance = super(Loggings, cls).__new__(cls, *args, **kwargs)
  17. return cls.__instance
  18. def info(self, msg):
  19. return logger.info(msg)
  20. def debug(self, msg):
  21. return logger.debug(msg)
  22. def warning(self, msg):
  23. return logger.warning(msg)
  24. def error(self, msg):
  25. return logger.error(msg)

调用:

  1. from utils.Loggings import Loggings
  2. log = Loggings()
  3. log.info('this is a info')