More than 10 years ago when Tridion version 4 was the current release (and before versions 5, 2009, 2011,and 2013) there was a trash can feature and all deleted items would go there before being finally deleted. However, we noticed almost all customers did not use this feature and it was removed from the system by vesion 5.
It sounds like you have 2 needs:
- Log when a user deletes an item. This is best achieved with the
Event System, as Eric suggests, and you listen for the Delete event.
You could best store it in a DB and use an ORM like EF, ORMLite, etc
to store and retrieve them.
- Restoring a deleted item. This is a more difficult task - as you will need to re-create the item. The best starting place is to save the XML of the original item in the DB when it is being deleted, so you can use it to make it again later. In the worst case scenario, you could show the user the text of the item and they can create it manually themselves.
Both of these actions would need to be logged in your own custom database. I would suggest to start small and solve it step by step, focusing on 1 item type at a time.