Без дополнительной информации о том, для чего вам нужно ведение журнала, о коде мало что можно сказать.Все виды вторичных требований могут изменить дизайн.
Если вам нужна высокая производительность / пропускная способность, вам понадобятся очереди сообщений журнала, чтобы вызываемый код не блокировал действие журнала.Если вам нужна высокая уверенность в том, что сообщение журнала действительно отправлено, вам понадобится механизм обратной связи и «много» кода обработки ошибок.Если вы будете использовать это для регистрации производительности, вам может быть даже лучше с профилировщиком производительности.
Я бы сказал, Keep It Simple и перейти оттуда.