Как я могу написать некоторую трассировку в моем файле журнала в переполнении стека

Я хочу написать дату выполнения и конец выполнения файла в моем файле журнала.

Я ничего не могу установить, просто использую стандартный модуль (я выполняю свой код в командной строке с Linux).

Я хочу что-то вроде этого:
[TRACE] 2014-07-24 14:18:50,2014-07-24 14:18:52

У меня есть этот результат на данный момент:

[TRACE] , Start date of execution : Aug 25 2014 : 10:43:02
End date of execution : Mon Aug 25 10:43:06 2014

вот мой код:

#include <iostream>
#include <string>
#include <fstream>
#include <ctime>

using namespace std;

void startDateExecution(fstream& file) {

if(fichier)
{
file << "[TRACE]" << " , " << "Start date of execution : " << __DATE__ << " : " << __TIME__ << endl;
}
else
cerr << "Unable to open file" << endl;
}

void endDateExecution(fstream& file) {

time_t result = time(NULL);
file << "End date of execution : " << asctime(localtime(&result)) << endl;

file.close();
}

void displayDate(fstream& file) {

startDateExecution(file);
endDateExecution(file);
}

int main(){

fstream file("trace.log", ios::out | ios::trunc);
displayDate(file);
return 0;
}

0

Решение

Вы можете использовать библиотеку log4cpp. У этого есть много других особенностей также. На следующем веб-сайте доступны примеры программ.

http://log4cpp.sourceforge.net/

Вам просто нужно создать экземпляр приложения с учетом потребностей. Я использовал RollingFileAppender в своем проекте, где мне нужно было разделить файл журнала после некоторого порога (то есть размер файла достигает 1 МБ). Затем вам нужно установить шаблон, в котором вы хотите, чтобы логи были записаны.

Надеюсь это поможет.

1

Другие решения

Как многие прокомментировали, __DATE__ а также __TIME__ сослаться на время сборник, не исполнение.
Вам необходимо получить текущее время как в начале, так и в конце выполнения; вы будете использовать один и тот же метод, какой бы вы ни использовали, в обоих случаях.

Вот пример того, как вы можете отформатировать время, используя strftime,

std::string format(time_t when)
{
char timestr[256] = {0};
const char* my_format = "%m/%d/%y @ %H:%M:%S";
std::strftime(timestr, sizeof(timestr), my_format, std::localtime(&when));
return timestr;
}

Вы бы использовали это так:

int main()
{
time_t start = std::time(NULL);
// Do stuff
time_t end = std::time(NULL);

std::cout << "Start: " << format(start) << std::endl
<< "End: "   << format(end)   << std::endl;
}

Читать документация для strftime чтобы узнать, как указать свой собственный формат.

1

По вопросам рекламы [email protected]