Generally a Passage contains three types of content:
1. The text that the Reader reads.
2. The programming logic that controls what text is seen when, and this is generally done using the current value of story variables.
3. The programming logic that updates the story variables (state history) of your story, this is generally done as a result of the Reader making choices.
The main issue with displaying the content of previously seen passages (a readable log) is that if you do so then:
A. The logic in point 2 will use the current value of the referenced story variables, and that value make not be the same as it was at the time the Passage was previously shown.
B. The Reader selectable choices in point 3 will be displayed again, unless you include some functionallity that suppresses them.
C. The story variable changing logic in point 3 is likely to be run again, which could result in them ending up with incorrect values.
So you basically have to do four things when implementing such a log:
1. Add functionallity that temporarily rewinds the History system back to the state it was at the start.
2. Loop through each of the Moments stored in the History and display the associated Passage.
3. Design every visual Passage so that it suppress all Reader selectable links while the log is being displayed, you may will also need to temporarly disable the Undo/Redo buttons.
4. Reset the History system back to how it was before the Reader activated the log.
Unfortunately Harlowe is deliberately designed to restrict Author access to the story format's engine's internals, which will make all the History related coding difficult at best.