dbgLog

Запись сообщения в файл лога. Сообщения дописываются в конец файла.

int dbgLog(
    char Level,
    const char* _Format,
    ...
);

Параметры

Level
[вх] Уровень ошибки. Должен удовлетворять 127 > Level > 0 !!! Отрицательные занчения Level зарезервированы для технических нужд и не должны быть использованы.
При значении ниже Lvl, заданного в dbgInitLog(), запись сообщения в лог-файл не производится.
В выводимом тексте значения 1 - 3 помечаются как "инфо, предупр, ошибка" соответственно. Остальные - цифра = значение Level
_Format
[вх] указатель на строку сообщения. Строка может содержать макроопределения, обрабатываемые слева-на-право:
%c, %Cвывод однобайтного символа
%w, %Wвывод мультибайтного символа
%i, %dвывод значения целого типа int
%uвывод значения беззнакового целого типа unsigned int
%x, %Xвывод шеснадцатиричного целого (аналогично printf())
%fвывод значения числа с плавающей точкой типа double
%sвывод завершающейся нулём строки однобайтных символов, заданной указателем на строку.
%Sвывод завершающейся нулём строки мультибайтных символов c преобразованием их в однобайтные, заданной указателем на строку.
%Lвывод завершающейся нулём строки мультибайтных символов, заданной указателем на строку.
%Dвывод дампа памяти, заданного указателем на блок пямяти в первом аргументе и размером блока во втором (нестандартно требует 2 аргумента void* и size_t)
%%
вывод одного символа "%".
Все макроопределения, кроме последнего, ожидают наличия переменных соответствующего типа, заданных в вызове функции после поля _Format и обрабатываемых в порядке появления их макросов в сообщении поля _Format.
... [вх] Множество прочих параметров, состав, типы и порядок следования которых зависит от данных, переданных в параметре _Format.

Возвращаемые значения

1 - сообщение выведено.
0 - пропуск ( Level < Lvl ) или не инициализировано.

Заметки

Перед началом использования должна быть настроена вызовом макроса dbgInitLog.
По поводу преобразования символов и строк: функция использует собственный внутренний функционал перекодировки. Последний настроен на латиницу/кирилицу, однако потенциально будет той, с какой кодировкой для компилятора по умолчанию будет скомпилирована библиотека.

Вспомогательные макросы

    #define dbgInitLog(Lvl, pPath)dbgLog(-1, pPath, Lvl)

Инициализация системы. Должна быть вызвана перед первым вызовом dbgLog
Lvl(BYTE)[вх]фильтр уровня ошибки. =0 для выключения любого вывода
pPath(char)[вх]указатель на строку с путём к файлу лога.
Возврат: 1 - успешно инициализирована, 0 - сбой.

    #define dbgCfgLogLevels(table, items, length)dbgLog(-2, table, (unsigned int) items, (unsigned int) length);

Устанавливает пользовательскую таблицу расшифровки уровней ошибок
table (static char*) [вх] Адрес таблицы текстовых строк. Должна быть представлена как матрица выровненных блоков содержащих строки текстового описания уровней ошибки начиная с уровня 1.
целостность и неизменность памяти таблицы должна быть обеспечена на всём протяжении использования!
установка table в 0 позволяет сбросить настройки на внутренние умолчания.
items
(size_t) [вх] число элементов таблицы
length(size_t)[вх]длинна блока

    #define dbgCfgLogTime(On, format)if(On){dbgLog(-3, format);}else{dbgLog(-3, 0);}

включение/настройка вывода времени. Включено по умолчанию
On (bool) [вх] =1 - включить, =0 - выключить
format (const char[15]) [вх] определяет формат строки в виде *Y*M*D*h*m*s*c*
где *- символ-разделитель. в их роли могут выступать любые символы кроме '\0',
Y-год; M-месяц; D-день; h-часы; m-минуты; s-секунды; c-миллисекунды;
порядок следования YMDhmsc может меняться,
если необходимо исключить из строки какое-либо значение или разделитьель - соответствующую позицию следует установить в ноль.

    #define dbgCfgLogEcho(On)dbgLog(-4, (const char *) On)

Включение/выключение дополнительного вывода данных. Выключено по умолчанию
On (flag) [вх] =1 - включить для stderr, =2 - включить для stdout, =0 - выключить

Быстрая справка

ОС -
DLL 2fapShare.dll
Библиотека 2fapShare.lib
Заголовок log.h

Смотри также