Мой Велосипед Для Размышлений На C++

Вдохновленный публикацией «Регистратор с функциями-членами, которых не существует» , я решил для размышления выставить на всеобщее обозрение свой мета-байк, которым вполне успешно пользуюсь, и не только для логгирования.

Но начнём с простого логирования, продолжая вышеизложенную публикацию.

При реализации логирования перед собой были поставлены следующие задачи:

  • Решите проблему на «метауровне», чтобы отвязаться от окончательной реализации.

  • Интерфейсный API для ведения журналов должен быть простым и прозрачным.

  • Уметь отключать ненужные уровни логирования на этапе компиляции одной константой; например: все, что выше LOG_NOTICE, не должно включаться в результирующий двоичный файл
Фронтенд выглядит так: 1. В конструкторе CConnection логируем:
  
   

TestLog::Log<LOG_NOTICE>() << *this << "connection created";

2. Откуда наследуется CConnection

public TLogHeader<'c', CConnection>

3. Который, используя ЦРТП , знает, что в CConnection есть это: Теги: #метапрограммирование #c++11 #программирование #C++
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.