aliyun_log.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # -*- coding: utf-8 -*-
  2. """
  3. 公共方法,包含:生成log / 删除log
  4. """
  5. import json
  6. from datetime import date, timedelta
  7. from datetime import datetime
  8. from typing import Optional
  9. from aliyun.log import PutLogsRequest, LogClient, LogItem
  10. from loguru import logger
  11. proxies = {"http": None, "https": None}
  12. class AliyunLogger:
  13. # 统一获取当前时间 <class 'datetime.datetime'> 2022-04-14 20:13:51.244472
  14. now = datetime.now()
  15. # 昨天 <class 'str'> 2022-04-13
  16. yesterday = (date.today() + timedelta(days=-1)).strftime("%Y-%m-%d")
  17. # 今天 <class 'datetime.date'> 2022-04-14
  18. today = date.today()
  19. # 明天 <class 'str'> 2022-04-15
  20. tomorrow = (date.today() + timedelta(days=1)).strftime("%Y-%m-%d")
  21. # 写入阿里云日志
  22. @staticmethod
  23. def logging(channel: str,
  24. principal: str,
  25. channel_user: str,
  26. channel_video_id: str,
  27. message: str,
  28. code: str,
  29. data: Optional[str] = None,
  30. pq_video_id: Optional[str] = None):
  31. """
  32. 写入阿里云日志
  33. 测试库: https://sls.console.aliyun.com/lognext/project/crawler-log-dev/logsearch/crawler-log-dev
  34. 正式库: https://sls.console.aliyun.com/lognext/project/crawler-log-prod/logsearch/crawler-log-prod
  35. """
  36. accessKeyId = "LTAIWYUujJAm7CbH"
  37. accessKey = "RfSjdiWwED1sGFlsjXv0DlfTnZTG1P"
  38. project = "crawler-log-prod"
  39. logstore = "rewriting-log"
  40. endpoint = "cn-hangzhou.log.aliyuncs.com"
  41. try:
  42. if data:
  43. data = dict(item.split(":", 1) for item in data.split(",,"))
  44. contents = [
  45. ("principal", principal),
  46. ("channel", channel),
  47. ("channel_user", str(channel_user) if channel_user is not None else ""),
  48. ("channel_video_id", str(channel_video_id) if channel_video_id is not None else ""),
  49. ("message", str(message) if message is not None else ""),
  50. ("code", str(code) if code is not None else ""),
  51. ("data", json.dumps(data, ensure_ascii=False) if data else ""),
  52. ("pq_video_id", pq_video_id if pq_video_id else "")
  53. ]
  54. # 创建 LogClient 实例
  55. client = LogClient(endpoint, accessKeyId, accessKey)
  56. log_group = []
  57. log_item = LogItem()
  58. log_item.set_contents(contents)
  59. log_group.append(log_item)
  60. # 写入日志
  61. request = PutLogsRequest(
  62. project=project,
  63. logstore=logstore,
  64. topic="",
  65. source="",
  66. logitems=log_group,
  67. compress=False,
  68. )
  69. client.put_logs(request)
  70. except Exception as e:
  71. logger.error(f"写入日志失败: {e}")