Well, elementary you can not do this. That is you can sort of do something like this but its not possible to do so without either lot of luck, or insane preparation beforehand. Theres just no table where this kind of data is stored. Be prepared to redefine your requirements to get something useful done.
It really depends quite much on your scope, What is recent? How much do you want to monitor?
The first thing to do is read your command undo history, unfortunately many times this will not work because the history itself is not in form where you can easily make a 100% record of what happened, without going very very deep into maya. But unfortunately a lot of tools leave no trail so this wouldn't work as a general approach. But a bit depending onw hat you need this might work, and if it does for your special case thsi is easiest in very narrow scope (but don't expect it to work on a real tool that just need to work for every possible user out there)
If you want a more robust feature you can hook up to listen for changes, but then you need to do this before you notice the need to ask. However this will only even remotely practically work if and only if you can somehow narrow down the amount of attributes your listening to. Maya has a the awful tendency to change a lot of attributes when time is changed (yes in a medium scene the amount of attributes that fire is easily in millions), and they all fire at once. Maya doesn't differentiate at this level HOW something changed just that they did, and maya will spam you a lot. This is also technically quite challenging to do so that you don't slow maya down significantly and dont eat all memory up. Also best done in raw C++ also consider making a node. WARNING: Scripjobs don't work whenever a event fires, they work whenever a event fires and maya is NOT updating the DG.
You can use double bookkeeping to snapshot changes. Now this can work with preparation or in conjunction with undo. This is also not practical on every level, so best used only to investigate small changes to certain subsets of all nodes, unless you want to double up maya memory consumption. (tough if you filter out any geometry data attribues it could be manageable). Using with undo is also potenttially very slow and dangerous, but works.
PS: is this some work proposition, if so be prepared to fail. I maen your the 6 guy to try to force this withing 3 months.