hier ist ein Beispiel
Dies ist eine abgespeckte Version geschnitten wird. In unserem verwenden wir vargs und formatieren sie vor dem Aufruf von log_it.
typedef const char* c_str;
FILE* log_fp = 0;
const int max_log_size = 4 * 1024 * 1024;
const int max_no = 5;
c_str prefix = "logs_";
c_str postfix = ".txt";
void log_it(c_str str)
{
char file1[100], file2[100];
if(! log_fp)
{
sprintf(file1 "%s%d%s", prefix, 0, postfix);
log_fp = fopen(file1, "a");
}
if(log_fp)
{
if(ftell(log_fp) > max_log_size)
{
fclose(log_fp);
log_fp = 0;
for(int i = (max_no - 1); i >= 0; i--)
{
sprintf(file1 "%s%d%s", prefix, i, postfix);
sprintf(file1 "%s%d%s", prefix, i+1, postfix);
rename(file1, file2);
}
sprintf(file1 "%s%d%s", prefix, 0, postfix);
log_fp = fopen(file1, "a");
}
fputs(str, log_fp);
fflush(log_fp);
}
}
Ich hoffe, das hilft.
dave
warum nicht? Wenn Sie auf einer Entwicklungsumgebung arbeiten, können Sie schnell genug Speicherplatz auf Ihrer Festplatte haben und große Protokolle erstellen. an meinem Arbeitsplatz benutzen wir Rolling Logs wegen der großen Anzahl von Prozessen und der Debug-Ausgabe – hhafez
Er bittet um zirkuläre Protokollierung, und ich denke, er sollte wahrscheinlich Rolling Logging wollen. Ich verstehe nicht, warum du fragst "warum nicht?". –