I would setup DataEvents listeners on IPageStructureInfo and IPage, and then write some logic for figuring out what was changed and record that.
- IPage would fire when you add, deletes or change a page. That could be if ie. the UrlTitle of a page changes
- IPageStructureInfo would fire if you do a cut/paste of a page to a different place in the tree, as well as when a page is added or deleted.