log.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import json
  4. import jimit as ji
  5. import time
  6. from models import Database as db
  7. from models import FilterFieldType
  8. from models import ORM
  9. from models import Utils
  10. from models.initialize import app, logger
  11. __author__ = 'James Iter'
  12. __date__ = '2017/4/8'
  13. __contact__ = 'james.iter.cn@gmail.com'
  14. __copyright__ = '(c) 2017 by James Iter.'
  15. class Log(ORM):
  16. _table_name = 'log'
  17. _primary_key = 'id'
  18. def __init__(self, **kwargs):
  19. super(Log, self).__init__()
  20. self.id = 0
  21. self.type = kwargs.get('type', None)
  22. self.timestamp = kwargs.get('timestamp', 0)
  23. self.host = kwargs.get('host', None)
  24. self.message = kwargs.get('message', None)
  25. def set(self, **kwargs):
  26. self.type = kwargs.get('type', None)
  27. self.timestamp = kwargs.get('timestamp', 0)
  28. self.host = kwargs.get('host', None)
  29. self.message = kwargs.get('message', None)
  30. @staticmethod
  31. def get_filter_keywords():
  32. return {
  33. 'type': FilterFieldType.INT.value,
  34. 'timestamp': FilterFieldType.INT.value,
  35. 'host': FilterFieldType.STR.value
  36. }
  37. @staticmethod
  38. def get_allow_update_keywords():
  39. return []
  40. @staticmethod
  41. def get_allow_content_search_keywords():
  42. return ['host']
  43. @classmethod
  44. def launch(cls):
  45. log = Log()
  46. while True:
  47. if Utils.exit_flag:
  48. Utils.thread_counter -= 1
  49. print 'Thread say bye-bye'
  50. return
  51. try:
  52. host_log = db.r.lpop(app.config['host_event_report_queue'])
  53. if host_log is None:
  54. time.sleep(1)
  55. continue
  56. host_log = json.loads(host_log)
  57. log.set(type=host_log['type'], timestamp=host_log['timestamp'], host=host_log['host'],
  58. message=host_log['message'])
  59. log.create()
  60. except Exception as e:
  61. logger.error(e.message)