Евгений,

я бы хотел сделать лог, который будет (по "галочке") показывать, кто в него пишет:

Module.Type.Procedure: BlaBlaBla

Это можно с метаданными сделать, не меняя интерфейсов.
Да и вообще, не меняя интерфейсов, можно с метаданными сделать "выуживание" доп. параметров из вызывающей (клиентской) процедуры: если, скам, объявлена локальная переменная logLevel: INTEGER, то MyLog.Hook.String ее использует как атрибут сообщения.

В самом логе доп. данные можно хранить внутри невидимых view, чтобы иметь к ним структурированный доступ (не парсить текст в логе) и, например, фильтровать. Эти views (зрители) будут сродни складкам: то показываем, то нет.

Хотя, у вас немного иная, кмк, задача: вам нужно явно создавать в логе записи о событиях, а я хотел бы научить лог самостоятельно собирать некоторую инфу.