In the animation I want rotation locked to a single local axis like when you press R then X twice to rotate.
An example would be a wheel rotating on an axle.
You can simply use the Copy Rotation contraint:
Tip: For quick constraint creation, you can also first select the empty, then holding Shift to select your target object, then ShiftCtrlC -> Copy Rotation.
I would add an armature to the object. The armature only needs to have a single bone that is aligned to the objects axis and you can parent your object to the bone without bothering with weight painting. The bone can then easily be animated on it's axis and if you use Euler rotation you can have one f-curve to adjust the animation.
Transform locks can also limit the possible rotations if you only want to rotate on one axis.
I found a very simple solution by playing around.
Go to the timeline. Insert a Delta Rotation Keyframe at the start.
Then go to the object panel and chance the Delta Rotation values of the particular axis you wish to rotate. And then just add a new Delta Rotation keyframe. There you have a very simple animation of a rotation on a single axis.