Ich würde das einfach ins Systemeventlog schreiben (TEventLogger aus
Unit SvcMgr).
// EDIT:
b) Du hast ServiceExecute nicht (richtig) implementiert. Wie das richtig geht (while not Terminated do begin... end) steht in hunderten Tutorials.
Wobei das nicht so nötig ist. Es geht auch anders, siehe z.B. hier:
http://www.tolderlund.eu/delphi/service/service.htm