# -*- coding: utf-8 -*- """ 公共方法,包含:生成log / 删除log """ import json from datetime import date, timedelta from datetime import datetime from typing import Optional from aliyun.log import PutLogsRequest, LogClient, LogItem from loguru import logger proxies = {"http": None, "https": None} class AliyunLogger: # 统一获取当前时间 2022-04-14 20:13:51.244472 now = datetime.now() # 昨天 2022-04-13 yesterday = (date.today() + timedelta(days=-1)).strftime("%Y-%m-%d") # 今天 2022-04-14 today = date.today() # 明天 2022-04-15 tomorrow = (date.today() + timedelta(days=1)).strftime("%Y-%m-%d") # 写入阿里云日志 @staticmethod def logging(channel: str, principal: str, channel_user: str, channel_video_id: str, message: str, code: str, data: Optional[str] = None, pq_video_id: Optional[str] = None): """ 写入阿里云日志 测试库: https://sls.console.aliyun.com/lognext/project/crawler-log-dev/logsearch/crawler-log-dev 正式库: https://sls.console.aliyun.com/lognext/project/crawler-log-prod/logsearch/crawler-log-prod """ accessKeyId = "LTAIWYUujJAm7CbH" accessKey = "RfSjdiWwED1sGFlsjXv0DlfTnZTG1P" project = "crawler-log-prod" logstore = "rewriting-log" endpoint = "cn-hangzhou.log.aliyuncs.com" try: if data: data = dict(item.split(":", 1) for item in data.split(",,")) contents = [ ("principal", principal), ("channel", channel), ("channel_user", str(channel_user) if channel_user is not None else ""), ("channel_video_id", str(channel_video_id) if channel_video_id is not None else ""), ("message", str(message) if message is not None else ""), ("code", str(code) if code is not None else ""), ("data", json.dumps(data, ensure_ascii=False) if data else ""), ("pq_video_id", pq_video_id if pq_video_id else "") ] # 创建 LogClient 实例 client = LogClient(endpoint, accessKeyId, accessKey) log_group = [] log_item = LogItem() log_item.set_contents(contents) log_group.append(log_item) # 写入日志 request = PutLogsRequest( project=project, logstore=logstore, topic="", source="", logitems=log_group, compress=False, ) client.put_logs(request) except Exception as e: logger.error(f"写入日志失败: {e}")