В ряде задач, как при отладке, так и при эксплуатации, возникает неоходимость журналировать процесс. При этом ощущается необходимость писать именно сообщения. У сообщений могут быть доп. атрибуты, например, время или logLevel; по атрибутам сообщения могут фильтроваться при передаче, искаться в журнале.

Классический Log -- это сплошной текст, не рассчитан на такое применение -- нет явной операции отправки сформированого сообщения.
Можно эмулировать, но это все равно не то. Есть, например, реализация DatedLog, которая каждую новую строку начинает с даты и времени, т.е. каждая строка -- это как бы отдельное сообщение. Говорю как бы, потому что это не всегда так, бывают сообщения в несколько строк.

Кто-то с данной задачей сталкивался, возникала подобная потребность, есть какие-то решения?

Простейший интерфейс журнала рассматривался в ветке единую точку вывода в кроссплатформенной сборке. В журнале всего две операции:
PROCEDURE String (IN x: ARRAY OF CHAR) -- дописать в буфер цепочку
PROCEDURE Ln -- отправить сообщение в журнал

Для формирования сообщений можно работать через мапперы с интерфейсом вроде Log.