189 похожих чатов

Есть куча кода вида if (gEthernerSettings.log) log("Ethernet start") ... if (sGsmSettings.log)

log("Gsm start")

Хочется странного. Написание проверки if (settings.log) утомляет. Может я не вижу какой-то генерализованный метод включения/выключения вывода лог сообщений для определенной подсистемы?

17 ответов

10 просмотров

Я делаю так. И уже внутри "syslogwrap.h" в зависимости от LOG_MODULE подставляю что мне нужно. Внути кода это всегда вызов вида SYSLOG_D("msg");

Если все эти названия где-то забиты, перебором из нужной структуры в цикле

#define в помощь

vau
Я делаю так. И уже внутри "syslogwrap.h" в зависим...

примерный вид враппера. в функцию wsyslog передается первым параметром битовая маска и уровень логирования. внутри функции определяется что выводить а что пропускать в зависимости от текущих настроек

Serg-Sapov Автор вопроса
vau
Я делаю так. И уже внутри "syslogwrap.h" в зависим...

Например есть file_utils.hpp, в нем fileOpen(), в которой при неудаче вызывается log().

Да просто Log(module, mesg) А внутри уже разбираться что включено а что нет

Serg-Sapov Автор вопроса
Alexey Tsvetkov
Да просто Log(module, mesg) А внутри уже разбирать...

Ну это то что сейчас. А хочется не гадить везде параметром module

Serg-Sapov Автор вопроса
x893
file

Что file?

Serg Sapov
Что file?

Macro _ _ FILE_NAME _ _ в помощь

Serg-Sapov Автор вопроса
Serg Sapov
Ну это то что сейчас. А хочется не гадить везде па...

Тогда в модуле #define modulenmae mod1 #include logging.h А внутри logging.h #define LOG(message) log(modulename, message) Макрос LOG разворачивается в функцию log(modulename, message)

Serg-Sapov Автор вопроса
Alexey Tsvetkov
Тогда в модуле #define modulenmae mod1 #include lo...

Да, но есть еще общеиспользуемый код, в котором тоже вызывается log(), как туда передать modulename?

Serg-Sapov Автор вопроса

1. Необходимо рассказать от чего зависит if (gEthernerSettings.log) или if (sGsmSettings.log) в тексте, а потом уже ждать какого-нибудь ответа или следующего вопроса.

Serg-Sapov Автор вопроса
x893
1. Необходимо рассказать от чего зависит if (gEth...

Например, есть file_utils.cpp, в нем fileOpen(), надо при неудаче открытия файла выводить в лог, но только если fileOpen() вызывает подсистема с включенным логированием. Если fileOpen() вызывается из Ethernet.cpp и gEthernerSettings.log == true или вызывается из Gsm.cpp и gGsmSettings.log == true. И при этом не хочется прокидывать gEthernerSettings.log / gGsmSettings.log параметром в fileOpen(). Замечание о том что не надо логировать в fileOpen() опускаем, это просто как пример.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта