Как записывать логи в файлы размером 64 КБ в C ++ / VC ++? - PullRequest
2 голосов
/ 12 октября 2009

Как записывать журналы в файлы размером 64 КБ (чтобы блокнот мог их читать). Как только файл достиг 64 КБ, он должен идти головой и создавать другой, другой ...... Имена файлов могут быть сгенерированы автоматически.

Я попробовал следующий код

static int iCounter=1;
CString temp;
      static CStdioFile f(L"c:\\Log1.txt", CFile::modeWrite | CFile::modeRead |  CFile::modeCreate | CFile::modeNoTruncate);

 int nlength = (int)f.GetLength();
 if(nlength>(nMaxFileSize*1024))
 {
     //need to create a new file
     f.Close();
     iCounter++;
     temp.Format(_T("%s%d%s"), "c:\\Log",iCounter, ".txt");
     f.Open(temp,CFile::modeWrite | CFile::modeRead | CFile::modeCreate | CFile::modeNoTruncate);

 }
 f.SeekToEnd();
 f.WriteString(str);
 f.WriteString(L"\r\n");

Я ищу лучшую альтернативу.

Ответы [ 2 ]

5 голосов
/ 12 октября 2009

Напишите класс-оболочку, который принимает строки журнала, записывает их в текущий файл журнала и сохраняет счетчик общей длины строки.

Когда он достигнет вашего порога, закройте текущий файл журнала, создайте новый и сбросьте счетчик.

Вы можете использовать схему нумерации, например log00001.txt, log 00002.txt, ....

3 голосов
/ 12 октября 2009

Используйте log4cplus, который, безусловно, с этим справится - будучи правильно настроенным.

См. http://log4cplus.sourceforge.net/

...