I'm actually playing around with this concept already. I've got all the information I need to reliably roll back changes to blocks on the server, all I need to do now is associate an entity id with the changes, and plug a timestamp in an viola, the logging bit is done. However this doesn't log player movements/actions.

The first feature I want to implement, after getting the basic logging down, is a command to rollback changes based on a players name.
If it works decently well I'll fork the server on github and submit the code for proper peer review.