Заметка на будущее - отделять задачу лога сообщений как отдельную и не мешать ее с остальнм функционалом. Для сообщений есть TException (для дельфи) и std::exception (для С++).
UPD: Да, еще таки отпинать себя за лень и дочитать уже книгу про паттерны. Ибо пора б и за "Экстремальное программирование" садиться.