Conceptually similar in that you can decide after-the-fact what state you want to see.
But Time Travel Debugging applies that to everything in the program, not just log statements - all function calls, variables, memory locations, etc can be reconstructed after the fact without having to log them explicitly.