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

от автора

Введение

Начну с истории создания этого логгера. Есть довольно специфическая программа, которую я разрабатываю, в ней довольно много анти-отладочного кода плюс несколько ассемблерных вставок. По отдельности функции работают, а в релизной версии случаются глюки. Поэтому было принято решение заглянуть под капот программы. Хотелки были следующие:
• Минимальный размер кода (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_USER\Software\KVN»
И в ней создать параметр «level» типа DWORD с нужным вам уровнем «надоедливости» в диапазоне 0x00 – 0xFF

Заключение

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

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

ссылка на оригинал статьи http://habrahabr.ru/post/174469/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *