Nothing like that log exists really, though you can fairly easily output information from the executor to display in the node tree (see
Generally a node is only executed once, and the result stays in memory until it is no longer needed. An exception is nodes like switch, where the executor first executes the boolean, then later only executes the input that is actually necessary.
When the visual order is not trivial (e.g. a tree instead of a chain of nodes), the execution order won’t be trivial either, since there is multi-threading at a node-level too.
As for which nodes are calculated, the executor starts at the end of the node tree and starts scheduling operations at the necessary group output sockets and viewer nodes. As soon as a node finds that its inputs haven’t been calculated yet, it will schedule the nodes that compute them. Searching
output_sockets should take you to the relevant code.