Здравствуйте. С увеличиение программы стало трудно отлавливать ошибки. Решил пользоваться лог файлом. Не знаю как сделать. Если есть у кого примеры, скиньте пожалуйста. Спасибо.
void Log::Log(char* filename ){ file=fopen( filename,"w"); } void Log::print( const char *format, ...){ if( !file) return; va_list args; va_start( args, format); vfprintf( file, format, args); fflush( file); va_end( args); }
хоть так:
//logger.h #pragma once #include <stdio.h> #include <stdarg.h> // log print format void lprintf(const char *format, ...); //logger.cpp #include "logger.h" void lprintf( const char *format, ...) { static first = true; if ( FILE *file = fopen( "log.txt", first ? "w" : "a")) { first = false; va_list args; va_start( args, format); vfprintf( file, format, args); va_end( args); fclose( file); } }
bool
я первый успел))
LowPolyMan
а у меня круче, потому что всего одна функция и никаких лишних вызовов. :-P
:D
А у меня самое короткое!!!
std::fstream logfile("log.txt"); // ... logfile << "ап. ашипка паймалась: " << code << " в файле: " << __FILE__ << ", Строка:" << __LINE__ << "\n" ;
Вот здесь можешь посмотреть - http://www.gamedev.ru/files/?id=47445 . Говнокод, конечно, но там показано, как сделать, чтобы имя файла и номер строки выводились. Полезная штукенция, между прочим. Добавишь в первый или второй пост, и будет хорошо.
destrator
__LINE__ выведет номер строки, где делается запись в файл :)
google->log4cplus
google->log4cpp
Плюсовые форки log4j. Хотя, понимаю, всё равно велосипед будет свой.
destrator
>А у меня самое короткое!!!
и самое самое тормозное ;)
WerWoolf
к примерам LowPolyMan и bool еще бы добавить вывод в DebugOutput, для Visual C++ OutputDebugString функция.
bool
fflush не помешал бы, так что вариант LowPolyMan более быстрый и надежный, программа может упасть не успев сбросить файловые буферы на диск.
Ockonal
> destrator
> __LINE__ выведет номер строки, где делается запись в файл :)
Andrey
> и самое самое тормозное ;)
Так это прикол. В реальных приложениях у меня модифицированное макро из DXUT. Только инфа идет не в MSGBOX а в файл.
Кот Шрёдингера
Прикольное имя. А ты живой кот или мертвый?
сори за оффтоп
Он ещё не знает.
Вопрос нупа: как отключить ведение лога в Релизе Релизе?
Pokimon
> Вопрос нупа: как отключить ведение лога в Релизе Релизе?
Обвести лог вызовы макросами
#ifdef _DEBUG
#endif
Можно флаг bool g_Debug; поставить, но тогда все логи скомпилятся и работа замедлится из-за проверки его состояния.
Тема в архиве.