log_config.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import os
  2. import time
  3. import json
  4. import logging
  5. from config import log_root_path
  6. # 封装logging
  7. class LogConfig():
  8. def __init__(self, log_path, logger_name):
  9. '''
  10. 指定保存日志的文件路径,日志级别,以及调用文件
  11. 将日志存入到指定的文件中
  12. '''
  13. # 创建logger对象
  14. self.logger = logging.getLogger(logger_name)
  15. self.log_path = log_path
  16. # 设置日志等级
  17. self.logger.setLevel(logging.INFO) # DEBUG
  18. # 追加写入文件a ,设置utf-8编码防止中文写入乱码
  19. fh = logging.FileHandler(self.log_path, mode='a', encoding='utf8', delay=True)
  20. # 向文件输出的日志级别
  21. fh.setLevel(logging.INFO)
  22. # 向文件输出的日志信息格式
  23. formatter_dict = {
  24. "sys-msg": "%(asctime)s-%(filename)s-%(lineno)s-%(levelname)s",
  25. "log-msg": "%(message)s",
  26. }
  27. formatter = logging.Formatter(json.dumps(formatter_dict))
  28. # 将日志信息格式加载到日志文件中
  29. fh.setFormatter(formatter)
  30. # 加载文件到logger对象中
  31. self.logger.addHandler(fh)
  32. # 重置刷新日志
  33. def log_reset(self):
  34. # 设置日志定时自动新建
  35. os.rename(self.log_path, self.log_path.split('.')[0] + '_' + \
  36. str(time.strftime('%Y_%m%d_%H%M', time.localtime()))+'.log')
  37. # 获取生成日志读写操作并删除多余日志
  38. def get_log(self):
  39. self.del_log()
  40. return self.logger
  41. # 删除长期未处理日志
  42. def del_log(self):
  43. file_list = os.listdir(log_root_path)
  44. file_path_list = [os.path.join(log_root_path, file) for file in file_list]
  45. file_path_list = [file_path for file_path in file_path_list
  46. if self.log_path.split('.')[0] in file_path.split('.')[0]
  47. and self.log_path != file_path]
  48. file_path_list = [(file_path, os.path.getctime(file_path))
  49. for file_path in file_path_list]
  50. # 根据创建时间排序获取需要删除文件路径名称
  51. file_sort_list = sorted(file_path_list, key=lambda x: x[1], reverse=True)[1:]
  52. if len(file_sort_list) > 0:
  53. for ele in file_sort_list:
  54. os.remove(ele[0])