utils_logs_handle.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # -*- coding: UTF-8 -*-
  2. '''
  3. 获取每天日期,新建 logs 文件
  4. 存到 logs 文件夹中
  5. '''
  6. import time
  7. from datetime import datetime
  8. import os
  9. import sys
  10. sys.path.append(os.path.join(os.path.abspath(__file__).split('auto')[0] + 'auto'))
  11. from utils.utils_mongo_handle import MongoHandle
  12. from utils.utils_send_email import SendEmail
  13. from utils.utils_load_config import load_config, get_base_path
  14. config_json = load_config()
  15. base_project = get_base_path()
  16. class LogsHandle(object):
  17. def __init__(self):
  18. self.now_day = time.strftime('%Y-%m-%d', time.localtime())
  19. db = 'logs'
  20. collection = 'logs_' + self.now_day
  21. self.mongo = MongoHandle(db=db, collection=collection, del_db=False, del_collection=False, auto_remove=0)
  22. def logs_generate(self):
  23. data_to_insert = {
  24. "title": "logs",
  25. "context": 'generate logs',
  26. "state": "create",
  27. "create_time": int(time.time()),
  28. "create_datetime": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  29. }
  30. self.mongo.collection.insert_one(data_to_insert)
  31. def logs_send(self):
  32. subject = 'auto collection logs'
  33. title = 'auto collection - logs: {}'.format(self.now_day)
  34. text = ''
  35. # TODO
  36. # 从 mongodb 读取日志, 拼接 text, 发送邮件
  37. # 查询所有文档
  38. cursor = self.mongo.collection.find()
  39. # 遍历结果集
  40. for record in cursor:
  41. text += "logs_source: {}, logs_detail: {}, state: {} logs_create_time: {}\n\n".format(
  42. record.setdefault('title'),
  43. record.setdefault('content'),
  44. record.setdefault('state'),
  45. record.setdefault('create_datetime'),
  46. )
  47. S = SendEmail(subject=subject, title=title, text=text)
  48. S.send()
  49. def logs_write(self, title_source=None, content=None, state=None, send_now=False):
  50. data_to_insert = {
  51. "title": title_source,
  52. "context": content,
  53. "state": state,
  54. "create_time": int(time.time()),
  55. "create_datetime": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  56. }
  57. self.mongo.collection.insert_one(data_to_insert)
  58. if send_now:
  59. subject = 'auto collection'
  60. title = 'auto collection - running logs: {}'.format(self.now_day)
  61. text = 'logs_source: {}, logs_detail: {}, state: {} logs_create_time: {}'.format(
  62. data_to_insert.setdefault('title'),
  63. data_to_insert.setdefault('content'),
  64. data_to_insert.setdefault('state'),
  65. data_to_insert.setdefault('create_datetime'),
  66. )
  67. Send = SendEmail(subject=subject, title=title, text=text)
  68. Send.send()