Piping uma sessão interativa para um arquivo

Eu fiz um programa de console interativo de brinquedo que é basicamente um interpretador:

$ myprogram
> this is user input
this is program output

Eu quero canalizar a sessão completa, tanto a entrada do usuário e saída do programa, em um arquivo de log. Eu posso fazer isso assim:

$ cat | tee >(myprogram | tee -a file.log) >> file.log
> this is user input
this is program output
$ cat file.log
> this is user input
this is program output

Portanto, a sessão acima será exibida no terminal como de costume, mas também será duplicada no arquivo de log.

Existe uma maneira melhor de fazer isso? Eu não gosto de como eu tenho que escrever o arquivo de log duas vezes, nem como eu tenho que lembrar de limpá-lo antes de executar este comando.

questionAnswers(4)

yourAnswerToTheQuestion