Instead of just having a history for files we can come up with a generic auditing tool.
The audit manager would also be able to swallow history of all sorts of options and operations.
It would be an API first and foremost with a simple simple implementation and a plugin system behind it.
Then we can make the audit manager configurable: take the simple implementation unless there's a plugin present.
The history will keep track of history per "environment" or in general "namespace".
There are a bunch of things to keep track of (all strings to keep it simple):
- Type of object
- identifier of object ( filename or name)
- Type of operation (Open, Modify, Create, ...)
The handler would have the following:
- methods allowing us to search the history and get results.
- a limit to how much history is stored.
- a way to clear all history or for specific object types and operation types