For performance metrics we use graphite/stats-d This allows us to log hits/access times for many things, all without state handling code inside the app.
This allows us to get rid of a lot of logs after only a few days. As we're not doing silly things like shipping verbose logs for processing.
However in your usercase this might not be appropriate. As other people have mentioned, truncing the tables and shipping out to cold storage is a good idea if you really need three years of full resolution data.
For performance metrics we use graphite/stats-d This allows us to log hits/access times for many things, all without state handling code inside the app.
This allows us to get rid of a lot of logs after only a few days. As we're not doing silly things like shipping verbose logs for processing.
However in your usercase this might not be appropriate. As other people have mentioned, truncing the tables and shipping out to cold storage is a good idea if you really need three years of full resolution data.