fix(core): use logger exception

This commit is contained in:
smypmsa
2025-08-05 16:09:05 +00:00
parent 83a7f9e4ad
commit 874d148777
13 changed files with 60 additions and 63 deletions
+7 -7
View File
@@ -186,7 +186,7 @@ class SolanaClient:
except Exception as e:
if attempt == max_retries - 1:
logger.error(
logger.exception(
f"Failed to send transaction after {max_retries} attempts"
)
raise
@@ -215,8 +215,8 @@ class SolanaClient:
signature, commitment=commitment, sleep_seconds=1
)
return True
except Exception as e:
logger.error(f"Failed to confirm transaction {signature}: {e!s}")
except Exception:
logger.exception(f"Failed to confirm transaction {signature}")
return False
async def post_rpc(self, body: dict[str, Any]) -> dict[str, Any] | None:
@@ -238,9 +238,9 @@ class SolanaClient:
) as response:
response.raise_for_status()
return await response.json()
except aiohttp.ClientError as e:
logger.error(f"RPC request failed: {e!s}", exc_info=True)
except aiohttp.ClientError:
logger.exception("RPC request failed")
return None
except json.JSONDecodeError as e:
logger.error(f"Failed to decode RPC response: {e!s}", exc_info=True)
except json.JSONDecodeError:
logger.exception("Failed to decode RPC response")
return None
+2 -4
View File
@@ -62,8 +62,6 @@ class DynamicPriorityFee(PriorityFeePlugin):
return prior_fee
except Exception as e:
logger.error(
f"Failed to fetch recent priority fee: {str(e)}", exc_info=True
)
except Exception:
logger.exception("Failed to fetch recent priority fee")
return None
+6 -6
View File
@@ -129,8 +129,8 @@ class UniversalBlockListener(BaseTokenListener):
logger.warning("WebSocket connection closed. Reconnecting...")
ping_task.cancel()
except Exception as e:
logger.error(f"WebSocket connection error: {e!s}")
except Exception:
logger.exception("WebSocket connection error")
logger.info("Reconnecting in 5 seconds...")
await asyncio.sleep(5)
@@ -183,8 +183,8 @@ class UniversalBlockListener(BaseTokenListener):
return
except asyncio.CancelledError:
pass
except Exception as e:
logger.error(f"Ping error: {e!s}")
except Exception:
logger.exception("Ping error")
async def _wait_for_token_creation(self, websocket) -> TokenInfo | None:
"""Wait for token creation event from any platform.
@@ -234,7 +234,7 @@ class UniversalBlockListener(BaseTokenListener):
except websockets.exceptions.ConnectionClosed:
logger.warning("WebSocket connection closed")
raise
except Exception as e:
logger.error(f"Error processing WebSocket message: {e!s}")
except Exception:
logger.exception("Error processing WebSocket message")
return None
+6 -7
View File
@@ -160,18 +160,17 @@ class UniversalGeyserListener(BaseTokenListener):
await token_callback(token_info)
except Exception as e:
import grpc
if isinstance(e, grpc.aio.AioRpcError):
logger.error(f"gRPC error: {e.details()}")
logger.exception(f"gRPC error: {e.details()}")
else:
logger.error(f"Geyser error: {e}")
logger.exception("Geyser error occurred")
await asyncio.sleep(5)
finally:
await channel.close()
except Exception as e:
logger.error(f"Geyser connection error: {e}")
except Exception:
logger.exception("Geyser connection error")
logger.info("Reconnecting in 10 seconds...")
await asyncio.sleep(10)
@@ -208,6 +207,6 @@ class UniversalGeyserListener(BaseTokenListener):
return None
except Exception as e:
logger.error(f"Error processing Geyser update: {e}")
except Exception:
logger.exception("Error processing Geyser update")
return None
+6 -6
View File
@@ -127,8 +127,8 @@ class UniversalLogsListener(BaseTokenListener):
logger.warning("WebSocket connection closed. Reconnecting...")
ping_task.cancel()
except Exception as e:
logger.error(f"WebSocket connection error: {e!s}")
except Exception:
logger.exception("WebSocket connection error")
logger.info("Reconnecting in 5 seconds...")
await asyncio.sleep(5)
@@ -177,8 +177,8 @@ class UniversalLogsListener(BaseTokenListener):
return
except asyncio.CancelledError:
pass
except Exception as e:
logger.error(f"Ping error: {e!s}")
except Exception:
logger.exception("Ping error")
async def _wait_for_token_creation(self, websocket) -> TokenInfo | None:
"""Wait for token creation events from any platform."""
@@ -206,7 +206,7 @@ class UniversalLogsListener(BaseTokenListener):
except websockets.exceptions.ConnectionClosed:
logger.warning("WebSocket connection closed")
raise
except Exception as e:
logger.error(f"Error processing WebSocket message: {e!s}")
except Exception:
logger.exception("Error processing WebSocket message")
return None
@@ -156,8 +156,8 @@ class UniversalPumpPortalListener(BaseTokenListener):
return
except asyncio.CancelledError:
pass
except Exception as e:
logger.error(f"Ping error: {e}")
except Exception:
logger.exception("Ping error")
async def _wait_for_token_creation(self, websocket) -> TokenInfo | None:
"""Wait for token creation event from PumpPortal.
@@ -208,9 +208,9 @@ class UniversalPumpPortalListener(BaseTokenListener):
except websockets.exceptions.ConnectionClosed:
logger.warning("PumpPortal WebSocket connection closed")
raise
except json.JSONDecodeError as e:
logger.error(f"Failed to decode PumpPortal message: {e}")
except Exception as e:
logger.error(f"Error processing PumpPortal WebSocket message: {e}")
except json.JSONDecodeError:
logger.exception("Failed to decode PumpPortal message")
except Exception:
logger.exception("Error processing PumpPortal WebSocket message")
return None
+3 -3
View File
@@ -60,7 +60,7 @@ class LetsBonkCurveManager(CurveManager):
return pool_state_data
except Exception as e:
logger.error(f"Failed to get pool state: {e!s}")
logger.exception("Failed to get pool state")
raise ValueError(f"Invalid pool state: {e!s}")
async def calculate_price(self, pool_address: Pubkey) -> float:
@@ -239,6 +239,6 @@ class LetsBonkCurveManager(CurveManager):
return True
except Exception as e:
logger.error(f"Pool state validation failed: {e}")
except Exception:
logger.exception("Pool state validation failed")
return False
@@ -113,6 +113,6 @@ class LetsBonkPumpPortalProcessor:
creator=creator,
)
except Exception as e:
logger.error(f"Failed to process PumpPortal LetsBonk token data: {e}")
except Exception:
logger.exception("Failed to process PumpPortal LetsBonk token data")
return None
+3 -3
View File
@@ -58,7 +58,7 @@ class PumpFunCurveManager(CurveManager):
return curve_state_data
except Exception as e:
logger.error(f"Failed to get curve state: {e!s}")
logger.exception("Failed to get curve state")
raise ValueError(f"Invalid bonding curve state: {e!s}")
async def calculate_price(self, pool_address: Pubkey) -> float:
@@ -317,6 +317,6 @@ class PumpFunCurveManager(CurveManager):
return True
except Exception as e:
logger.error(f"Curve state validation failed: {e}")
except Exception:
logger.exception("Curve state validation failed")
return False
+2 -2
View File
@@ -191,8 +191,8 @@ class PumpFunEventParser(EventParser):
logger.info("❌ No valid CreateEvent found in any Program data entries")
return None
except Exception as e:
logger.error(f"Failed to parse token creation from logs: {e}")
except Exception:
logger.exception("Failed to parse token creation from logs")
return None
def parse_token_creation_from_instruction(
@@ -99,6 +99,6 @@ class PumpFunPumpPortalProcessor:
creator_vault=creator_vault,
)
except Exception as e:
logger.error(f"Failed to process PumpPortal token data: {e}")
except Exception:
logger.exception("Failed to process PumpPortal token data")
return None
+14 -14
View File
@@ -110,8 +110,8 @@ class UniversalTrader:
from platforms import platform_factory
if not platform_factory.registry.is_platform_supported(self.platform):
raise ValueError(f"Platform {self.platform.value} is not supported")
except Exception as e:
logger.error(f"Platform validation failed: {e}")
except Exception:
logger.exception("Platform validation failed")
raise
# Get platform-specific implementations
@@ -234,8 +234,8 @@ class UniversalTrader:
self.match_string,
self.bro_address,
)
except Exception as e:
logger.error(f"Token listening stopped due to error: {e!s}")
except Exception:
logger.exception("Token listening stopped due to error")
finally:
processor_task.cancel()
try:
@@ -243,8 +243,8 @@ class UniversalTrader:
except asyncio.CancelledError:
pass
except Exception as e:
logger.error(f"Trading stopped due to error: {e!s}")
except Exception:
logger.exception("Trading stopped due to error")
finally:
await self._cleanup_resources()
@@ -306,8 +306,8 @@ class UniversalTrader:
self.cleanup_with_priority_fee,
self.cleanup_force_close_with_burn,
)
except Exception as e:
logger.error(f"Error during cleanup: {e!s}")
except Exception:
logger.exception("Error during cleanup")
old_keys = {k for k in self.token_timestamps if k not in self.processed_tokens}
for key in old_keys:
@@ -352,8 +352,8 @@ class UniversalTrader:
except asyncio.CancelledError:
logger.info("Token queue processor was cancelled")
break
except Exception as e:
logger.error(f"Error in token queue processor: {e!s}")
except Exception:
logger.exception("Error in token queue processor")
finally:
self.token_queue.task_done()
@@ -385,8 +385,8 @@ class UniversalTrader:
logger.info(f"YOLO mode enabled. Waiting {self.wait_time_before_new_token} seconds before looking for next token...")
await asyncio.sleep(self.wait_time_before_new_token)
except Exception as e:
logger.error(f"Error handling token {token_info.symbol}: {e!s}")
except Exception:
logger.exception(f"Error handling token {token_info.symbol}")
async def _handle_successful_buy(self, token_info: TokenInfo, buy_result: TradeResult) -> None:
"""Handle successful token purchase."""
@@ -526,8 +526,8 @@ class UniversalTrader:
# Wait before next price check
await asyncio.sleep(self.price_check_interval)
except Exception as e:
logger.error(f"Error monitoring position: {e}")
except Exception:
logger.exception("Error monitoring position")
await asyncio.sleep(self.price_check_interval) # Continue monitoring despite errors
def _get_pool_address(self, token_info: TokenInfo) -> Pubkey:
+1 -1
View File
@@ -242,7 +242,7 @@ class IDLManager:
"event_count": len(event_names),
}
except Exception as e:
logger.error(f"Failed to get capabilities for {platform.value}: {e}")
logger.exception(f"Failed to get capabilities for {platform.value}")
return {
"platform": platform.value,
"has_idl_support": False,