# EVM getLogs vs getFilterLogs **Published by:** [skynet](https://paragraph.com/@mmorrell/) **Published on:** 2023-06-04 **URL:** https://paragraph.com/@mmorrell/evm-getlogs-vs-getfilterlogs ## Content “So you want transaction data from the ETH blockchain…”Solution: eth_getLogs, eth_getFilterLogs, and eth_getFilterChangesWhy eth_getLogs is my preferred choiceThe Filter mechanism is best when real-time latency matters. However, that isn’t needed in our case, and the session / WebSocket management is not worth the gain from polling. We can observe every block with getLogs by correctly tuning the “start” and “stop” block heights passed to getLogs.Filter support is weakPer the main ETH docs, Infura doesn’t support Filters. I have yet to check who else does or doesn’t support filters.WebSockets make your code break - prefer getLogsSecure WebSockets are a big tech psyop to make your code break. Why? Because having to manage the connection, which will disconnect at some point always, is not worth it. Spam poll and track your own uniques is my preferred pattern.Filters require RPC stateYour RPC provider must manage all your filters in memory, adding another dependency that could break. Your RPC’s load balancer, even with sticky sessions, can break. Then you’ll have sent your filters to box A, but are then LB’ed to box B, and your app suddenly has no filter context. ## Publication Information - [skynet](https://paragraph.com/@mmorrell/): Publication homepage - [All Posts](https://paragraph.com/@mmorrell/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@mmorrell): Subscribe to updates - [Twitter](https://twitter.com/skynetcap): Follow on Twitter