Como faço para que STDOUT e STDERR acessem o terminal e um arquivo de log?

Eu tenho um script que será executado interativamente por usuários não técnicos. O script grava atualizações de status no STDOUT para que o usuário possa ter certeza de que o script está executando OK.

Desejo que STDOUT e STDERR sejam redirecionados para o terminal (para que o usuário possa ver que o script está funcionando e também para ver se houve algum problema). Também quero que os dois fluxos sejam redirecionados para um arquivo de log.

Eu já vi várias soluções na rede. Alguns não funcionam e outros são terrivelmente complicados. Eu desenvolvi uma solução viável (a qual entrarei como resposta), mas é desagradável.

A solução perfeita seria uma única linha de código que poderia ser incorporada ao início de qualquer script que envie os dois fluxos ao terminal e a um arquivo de log.

EDITAR: Redirecionar STDERR para STDOUT e canalizar o resultado para tee funciona, mas isso depende dos usuários que lembram de redirecionar e canalizar a saída. Desejo que o registro seja à prova de erros e automático (é por isso que eu gostaria de poder incorporar a solução no próprio script.)

questionAnswers(8)

yourAnswerToTheQuestion