One thing I try to be careful of, especially in your particular example, is to prefix log lines with session IDs. If my app is sending multiple e-mails simultaneously, I want to know which lines correspond to which sessions if one of them went south, because they're all likely to be jumbled up.
This is doubly true for logging multithreaded processes.
This is doubly true for logging multithreaded processes.