I agree with @Reeza's suggestion to try -altlog. Unfortunately, this option needs to be specified when SAS is invoked. One way is to add a line to your SAS config file (mine is in C:\Program Files\SASHome\SASFoundation\9.4\nls\en\sasv9.cfg):
-altlog d:\junk\MySASaltlog.log
Each time you start SAS, it will write to MySASaltlog.log in addition to your log window. MySASaltlog.log is overwritten for each session. You have to jump through some hoops to generate a separate log for each session.
I think it would be great if you could specify altlog on an options statement during a SAS session, e.g.:
options altlog="d:\junk\MySASaltlog_%sysfunc(today(),yymmddn8)";
If you agree, please like / upvote my SAS ballotware idea that proposes this: https://communities.sas.com/t5/SASware-Ballot-Ideas/Allow-ALTLOG-to-be-specified-on-OPTIONS-statement/idi-p/219628
Another approach for PC SAS is to use the DM statement. Submitting the following statement will copy the content of the current log window to MyLog_YYYYMDD.log:
dm "log; file ""d:\junk\MyLog_%sysfunc(today(),yymmddn8).log"" replace;";
You could probably assign that command to a function key as well.
A last thought is to question why you want to save the log from an interactive SAS session. Most folks use interactive sessions to develop code. Then when they are done, they batch submit the program for the final production run. This has the benefit of starting with a clean SAS session, as well as writing a log file automatically. With that approach, it's rarely useful to save a log file from an interactive session.