浏览代码

Replace prints with trace logs

Tulir Asokan 4 年之前
父节点
当前提交
192693f1c0
共有 4 个文件被更改,包括 18 次插入12 次删除
  1. 7 3
      mauigpapi/http/base.py
  2. 5 6
      mauigpapi/mqtt/conn.py
  3. 2 1
      mauigpapi/types/account.py
  4. 4 2
      mautrix_instagram/user.py

+ 7 - 3
mauigpapi/http/base.py

@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
 from typing import Optional, Dict, Any, TypeVar, Type, Union
+import logging
 import random
 import time
 import json
@@ -21,6 +22,7 @@ import json
 from aiohttp import ClientSession, ClientResponse
 from yarl import URL
 from mautrix.types import JSON, Serializable
+from mautrix.util.logging import TraceLogger
 
 from ..state import AndroidState
 from ..errors import (IGActionSpamError, IGNotFoundError, IGRateLimitError, IGCheckpointError,
@@ -36,10 +38,12 @@ class BaseAndroidAPI:
     url = URL("https://i.instagram.com")
     http: ClientSession
     state: AndroidState
+    log: TraceLogger
 
-    def __init__(self, state: AndroidState) -> None:
+    def __init__(self, state: AndroidState, log: Optional[TraceLogger] = None) -> None:
         self.http = ClientSession(cookie_jar=state.cookies.jar)
         self.state = state
+        self.log = log or logging.getLogger("mauigpapi.http")
 
     @staticmethod
     def sign(req: Any, filter_nulls: bool = False) -> Dict[str, str]:
@@ -106,7 +110,7 @@ class BaseAndroidAPI:
         if not raw:
             data = self.sign(data, filter_nulls=filter_nulls)
         resp = await self.http.post(url=self.url.with_path(path), headers=headers, data=data)
-        print(f"{path} response: {await resp.text()}")
+        self.log.trace(f"{path} response: {await resp.text()}")
         if response_type is str or response_type is None:
             self._handle_response_headers(resp)
             if response_type is str:
@@ -123,7 +127,7 @@ class BaseAndroidAPI:
         headers = {**self._headers, **headers} if headers else self._headers
         query = {k: v for k, v in (query or {}).items() if v is not None}
         resp = await self.http.get(url=self.url.with_path(path).with_query(query), headers=headers)
-        print(f"{path} response: {await resp.text()}")
+        self.log.trace(f"{path} response: {await resp.text()}")
         if response_type is None:
             self._handle_response_headers(resp)
             return None

+ 5 - 6
mauigpapi/mqtt/conn.py

@@ -81,7 +81,7 @@ class AndroidMQTT:
         self._disconnect_error = None
         self._response_waiter_locks = defaultdict(lambda: asyncio.Lock())
         self._event_handlers = defaultdict(lambda: [])
-        self.log = log or logging.getLogger("mauigpapi")
+        self.log = log or logging.getLogger("mauigpapi.mqtt")
         self._loop = loop or asyncio.get_event_loop()
         self.state = state
         self._client = MQTToTClient(
@@ -210,8 +210,7 @@ class AndroidMQTT:
 
     # region Incoming event parsing
 
-    @staticmethod
-    def _parse_direct_thread_path(path: str) -> dict:
+    def _parse_direct_thread_path(self, path: str) -> dict:
         blank, direct_v2, threads, thread_id, *rest = path.split("/")
         assert blank == ""
         assert direct_v2 == "direct_v2"
@@ -237,7 +236,7 @@ class AndroidMQTT:
                 additional["admin_user_id"] = int(rest[1])
             elif subitem_key == "activity_indicator_id":
                 additional["activity_indicator_id"] = rest[1]
-        print("Parsed path", path, "->", additional)
+        self.log.trace("Parsed path %s -> %s", path, additional)
         return additional
 
     def _on_message_sync(self, payload: bytes) -> None:
@@ -323,7 +322,7 @@ class AndroidMQTT:
             elif topic == RealtimeTopic.REALTIME_SUB:
                 self._on_realtime_sub(message.payload)
             else:
-                print("other message", message.payload)
+                self.log.trace("Other message payload: %s", message.payload)
                 try:
                     waiter = self._response_waiters.pop(topic)
                 except KeyError:
@@ -333,7 +332,7 @@ class AndroidMQTT:
                     waiter.set_result(message)
         except Exception:
             self.log.exception("Error in incoming MQTT message handler")
-            print(message.payload)
+            self.log.trace("Errored MQTT payload: %s", message.payload)
 
     # endregion
 

+ 2 - 1
mauigpapi/types/account.py

@@ -16,6 +16,7 @@
 from typing import Any, List, Optional, Dict
 
 from attr import dataclass
+import attr
 
 from mautrix.types import SerializableAttrs, SerializableEnum
 
@@ -110,7 +111,7 @@ class CurrentUser(BaseFullResponseUser, SerializableAttrs['CurrentUser']):
     biography_product_mentions: List[Any]
     external_url: str
     has_biography_translation: bool = False
-    hd_profile_pic_versions: List[HDProfilePictureVersion]
+    hd_profile_pic_versions: List[HDProfilePictureVersion] = attr.ib(factory=lambda: [])
     hd_profile_pic_url_info: HDProfilePictureVersion
     show_conversion_edit_entry: bool
     birthday: Any

+ 4 - 2
mautrix_instagram/user.py

@@ -29,6 +29,7 @@ from mautrix.bridge import BaseUser
 from mautrix.types import UserID, RoomID, EventID, TextMessageEventContent, MessageType
 from mautrix.appservice import AppService
 from mautrix.util.opt_prometheus import Summary, Gauge, async_time
+from mautrix.util.logging import TraceLogger
 
 from .db import User as DBUser, Portal as DBPortal
 from .config import Config
@@ -44,6 +45,7 @@ METRIC_CONNECTED = Gauge("bridge_connected", "Bridged users connected to Instagr
 
 
 class User(DBUser, BaseUser):
+    ig_base_log: TraceLogger = logging.getLogger("mau.instagram")
     _activity_indicator_ids: Dict[str, int] = {}
     by_mxid: Dict[UserID, 'User'] = {}
     by_igpk: Dict[int, 'User'] = {}
@@ -99,7 +101,7 @@ class User(DBUser, BaseUser):
             self.log.exception("Error while connecting to Instagram")
 
     async def connect(self) -> None:
-        client = AndroidAPI(self.state)
+        client = AndroidAPI(self.state, log=self.ig_base_log.getChild("http").getChild(self.mxid))
 
         try:
             resp = await client.current_user()
@@ -116,7 +118,7 @@ class User(DBUser, BaseUser):
         self.by_igpk[self.igpk] = self
 
         self.mqtt = AndroidMQTT(self.state, loop=self.loop,
-                                log=logging.getLogger("mau.instagram.mqtt").getChild(self.mxid))
+                                log=self.ig_base_log.getChild("mqtt").getChild(self.mxid))
         self.mqtt.add_event_handler(Connect, self.on_connect)
         self.mqtt.add_event_handler(Disconnect, self.on_disconnect)
         self.mqtt.add_event_handler(MessageSyncEvent, self.handle_message)