ПрограммированиеФорумОбщее

Ведение лог файла

Страницы: 1 2 3 4 Следующая »
#0
22:40, 29 окт 2009

Здравствуйте. С увеличиение программы стало трудно отлавливать ошибки. Решил пользоваться лог файлом. Не знаю как сделать. Если есть у кого примеры, скиньте пожалуйста. Спасибо.

#1
22:45, 29 окт 2009
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);
}
#2
22:46, 29 окт 2009

хоть так:

//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);
  }
}
#3
22:47, 29 окт 2009

bool
я первый успел))

#4
22:48, 29 окт 2009

LowPolyMan
а у меня круче, потому что всего одна функция и никаких лишних вызовов. :-P
:D

#5
23:19, 29 окт 2009

А у меня самое короткое!!!

std::fstream logfile("log.txt");

// ...

logfile << "ап. ашипка паймалась: " << code << " в файле: " << __FILE__ << ", Строка:" << __LINE__ << "\n" ;
#6
23:32, 29 окт 2009

Вот здесь можешь посмотреть - http://www.gamedev.ru/files/?id=47445 . Говнокод, конечно, но там показано, как сделать, чтобы имя файла и номер строки выводились. Полезная штукенция, между прочим. Добавишь в первый или второй пост, и будет хорошо.

#7
0:54, 30 окт 2009

destrator
__LINE__ выведет номер строки, где делается запись в файл :)

#8
7:59, 30 окт 2009

google->log4cplus
google->log4cpp

Плюсовые форки log4j. Хотя, понимаю, всё равно велосипед будет свой.

#9
10:25, 30 окт 2009

destrator
>А у меня самое короткое!!!
и самое самое тормозное ;)
WerWoolf
к примерам LowPolyMan и bool еще бы добавить вывод в DebugOutput, для Visual C++ OutputDebugString функция.
bool
fflush не помешал бы, так что вариант LowPolyMan более быстрый и надежный, программа может упасть не успев сбросить файловые буферы на диск.

#10
12:31, 30 окт 2009

Ockonal
> destrator
> __LINE__ выведет номер строки, где делается запись в файл :)
Andrey
> и самое самое тормозное ;)

Так это прикол. В реальных приложениях у меня модифицированное макро из DXUT. Только инфа идет не в MSGBOX а в файл.

#11
12:33, 30 окт 2009

Кот Шрёдингера
Прикольное имя. А ты живой кот или мертвый?

сори за оффтоп

#12
12:41, 30 окт 2009

Он ещё не знает.

#13
12:43, 30 окт 2009

Вопрос нупа: как отключить ведение лога в Релизе Релизе?

#14
12:48, 30 окт 2009

Pokimon
> Вопрос нупа: как отключить ведение лога в Релизе Релизе?
Обвести лог вызовы макросами

#ifdef _DEBUG

#endif

Можно флаг bool g_Debug; поставить, но тогда все логи скомпилятся и работа замедлится из-за проверки его состояния.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.