Маленький, быстрый и простой логгер для С++

в 19:07, , рубрики: c++, logger, tutorials, метки: , ,

Введение

Начну с истории создания этого логгера. Есть довольно специфическая программа, которую я разрабатываю, в ней довольно много анти-отладочного кода плюс несколько ассемблерных вставок. По отдельности функции работают, а в релизной версии случаются глюки. Поэтому было принято решение заглянуть под капот программы. Хотелки были следующие:
• Минимальный размер кода (84Кб сама программа)
• Возможность гибко управлять детализацией информации
• Незаметность на машине пользователя
• Простота в использовании
Поиск по интернетам выдал настоящих монстров логгирования, чтение отзывов еще больше меня опечалило. Сложилось мнение что и в стане С++ ков думают что: гигабайтом больше, гигабайтом меньше и это не важно. Что получилось, вы сможете посмотреть ниже.

Описание

KLog – маленький, быстрый и простой в использовании логгер предназначенный для встраивания в С++ проекты, вот собственно и все что можно сказать про этот логгер. Состоит он из одного файла «Klog.h». Для использования достаточно добавить этот файл в проект и включить его в ваши исходники.

#include "Klog.h"
void main(){
	LOG(255,"test %s", "hello" );
	LOG(255,"test");
}

Логика работы следующая: При первом вызове создается Синглтон, из реестра считывается уровень «надоедливости», после этого производится запись сообщений выше уровня «надоедливости» в лог файл.

// Write message to log file like a printf. You can use next constant's:  LOG_NOLOG, LOG_FATAL, LOG_ERROR, LOG_INFO,LOG_DEBUG
// or use log level from range 0x00 - 0xFF
// Log format is "TIMESTAMP TABULAR LOGLEVEL TABULAR MESSAGE CRLF"
// log file name is "trace.log" 
void Log(int level, const char* message, ...){

	if(level >= _level){
         ...
  }
}

Формат лог файла следующий:
“Время_вызова Табуляция Уровень_важности_целое_число Табуляция Форматированное_сообщение Новая_строка”

Для включения логгирования нужно создать ветку реестра «HKEY_CURRENT_USERSoftwareKVN»
И в ней создать параметр «level» типа DWORD с нужным вам уровнем «надоедливости» в диапазоне 0x00 – 0xFF

Заключение

Надеюсь вам пригодиться эта программа, если у вас есть идеи как ее улучшить милости прошу на github.com/vkorotenko/klog

PS не пинайте сильно, от С++ я далек и возможно изобрел велосипед

Автор: firedragon

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js