I'm not sure howto to do it in `sh` but in bash you can do it with Process Substitution, and `tee` which should do what you wanted
#!/usr/bin/env bash
logfile=logfile.txt
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec > >(tee -a "$logfile") 2>&1 ##: Print to stdout and logfile.
* See also Logging