This will help you to record everything you input and all output from your terminal to a file, while you work on your terminal normally.
First, put spyshell in /usr/local/bin/
Add the line /usr/local/bin/spyshell in the file /etc/shells
Do `chsh -s /usr/local/bin/spyshell`
Add the zshexit function in your .zshrc file.
This will create a file in ~/.termlogs/ named with the date, and will append till the day is over. The output is also stripped from any non-printable characters.
You can modify it so that it launches bash, or any other shell, change the location of the logs, as well as the names.
credits: a gist I cannot find, and a lot googling..