Your last paragraph is a bit jumbled, but I'll do what I can to illuminate at least a bit of the darkness.
First, if a procedure DIRECTLY alters the data source (rather than altering a control on the form), that change is committed and done, no "Undo" is available. The normal automation of the form has nothing to do with ANYTHING that makes programmatic changes to the underlying data and - using code - saves the changes. If manual changes were ALSO made to the form's controls, the form has become "dirty" and a close with no other action would have the effect of saving the data again - potentially overwriting the programmed changes.
Second, the normal data and logistics flow of a form is that IF you are going to navigate to another record and IF the form was dirty with respect to the record before navigation, a data save will also occur before the navigation occurs.
Third, normally, if you close a form, I don't believe your user would have time to do anything else before it actually closes. So I wouldn't worry too much about users getting into a closing form. This is usually a very fast process - milliseconds fast or faster depending on what you use for a hard drive or system volume.
Fourth, what you log is your business, but WHEN you log something depends on what you are doing, and HOW you log also depends on what resources you have opened at the time. Your description maybe confuse the issue slightly but USUALLY if you are going to log something that was already done, the logging code could run in the AfterUpdate event.
I think a little bit more of an explanation is in order if we are going to give you best advice on how to proceed.