So this is what i think you want to do.
To keep output on stdout but also go to file
long_proc(){
exec 4>&1
#redirect fd4(currently nothing hopefully) to stdout
exec 1>&3
#redirect stdout to fd3(also hopefully unused)
#Note you have 5 more to choose from if they are in use.
echo Just log
#script1 that generate output1
echo Log and Stdout | tee >(cat - >&4)
#script1 that generate output2
# Tee into a subproc to cat data into fd4 pointing to stdout
#The tee'd data also goes to fd3
exec 1>&4
# set fd1 back to stdout
exec 4>&-
#close fd4
}
long_proc 3> log
#Send fd3 to log, stdout is untouched and does whatever you want.
So redirect all output to fd3, which is then all piped into log.
Tee into stdout anything that you want to also be in stdout.
Benefit of this is that you can then pipe like
long_proc 3> log | sed 's/^/Piped and /'