There are different kinds of crontabs. (See man crontab, man cron).
"crontab -e" is specifically used to edit what I think of as the "real crontab" because its the one UNIX uses.
Your syntax is wrong for the "real crontab". In that crontab you need to setup the time to run then the command to run. That's what you're doing on the last line of your cron edit but the other two lines have no impact on that last line.
To fix it just add the other two lines to your script:
echo "testing" >> /home/Ethan/workspace/SelfPortrait/log.txt
Then just put the following line in your edit:
* * * * * /home/Ethan/workspace/SelfPortrait/monitor.sh
By the way the above syntax is saying run ever minute 24 hours a day so might cause you some issues with performance. You may wish to modify the "* * * * *" to a specific time or at least to a less frequent run. man crontab and man cron will let you know exactly what to set.
You can have multiple lines in the "real crontab" but they all have to have a time specification then a command specification.
Also to log commands done in cron you can simply modify the line to have the log:
* * * * * /home/Ethan/workspace/SelfPortrait/monitor.sh >>/home/Ethan/workspace/SelfPortrait/log.txt 2>&1 (This is all one line)
That tells it to append output to your log.
Finally there may be other environment variables besides HOME that you need to add to the script. From command line the script inherits the user's environment. From cron it has a minimal environment that is NOT inherited from the user that made the cron entry.