Условное логирование в Quagga

Изучаем устройство Quagga: как отладочный вывод прячется за условиями

менее 1 мин на чтение

В исходных кодах Quagga применяется интересное решение отладочного логирования. Помимо привычного уже уровня логирования debugging, пользователь может включить дополнительный отладочный вывод отдельных сущностей. Например, очереди событий. Делается это добавлением строки вида debug <сущность> в файле конфигурации.

В коде этот подход реализуется простыми условными конструкциями вроде такой:

if (IS_DEBUG_OSPF_EVENT)
    zlog_debug ("setting options on %s accordingly", IF_NAME (oi));

Занимательно, что Quagga по умолчанию включает именно отладочный (читай “многословный”) уровень логирования. Хотя количество записей в логах сильно не вырастает. Большая часть вывода спрятана под условиями.

И что же получается… Код нашпигован условными конструкциями, которые не решают прикладную задачу, но выполняются при этом всегда. Я бы к такому решению никогда не пришел - зачем нам лишние if-ы? В то же время мы видим сетевое приложение Quagga, управляющее трафиком в реалтайме и совершенно не колеблющееся из-за каких-то там if-ов.

Имеет место быть.


Свежие записи

Чему учиться в эпоху ИИ?

Чему учиться в эпоху ИИ?

Заметка по книге Букреева и ДеУолта “Эверест. Смертельное восхождение”

1 мин на чтение

Работать долго

Работать долго

Заметка по книге Нассима Талеба “Одураченные случайностью”

1 мин на чтение

Doc As Code: диаграммы PlantUML в Doxygen

Doc As Code: диаграммы PlantUML в Doxygen

Включаем поддержку UML-диаграмм в Doxygen и размышляем о последствиях

3 мин на чтение

Какие файлы нельзя коммитить в Git

Какие файлы нельзя коммитить в Git

Разбираемся, как не превратить репозиторий Git в Google-диск

3 мин на чтение

Зачем нужны UML диаграммы?

Зачем нужны UML диаграммы?

Выясняем, когда и для чего разработчики используют UML

3 мин на чтение