在Linux中,可以使用logrotate
工具實現日志輪轉
#include<stdio.h>
#include <stdarg.h>
#include <time.h>
void write_log(const char *format, ...) {
FILE *logfile;
va_list args;
time_t now;
char timestr[20];
logfile = fopen("myapp.log", "a");
if (logfile == NULL) {
return;
}
time(&now);
strftime(timestr, sizeof(timestr), "%Y-%m-%d %H:%M:%S", localtime(&now));
fprintf(logfile, "[%s] ", timestr);
va_start(args, format);
vfprintf(logfile, format, args);
va_end(args);
fclose(logfile);
}
int main() {
write_log("This is a log message.\n");
return 0;
}
gcc -o myapp myapp.c
./myapp
logrotate
配置文件:在/etc/logrotate.d/
目錄下創建一個名為myapp
的配置文件。使用文本編輯器打開該文件,例如:
sudo nano /etc/logrotate.d/myapp
logrotate
配置文件:將以下內容添加到配置文件中:
/path/to/your/myapp.log {
daily
rotate 7
compress
missingok
notifempty
create 640 root adm
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
請確保將/path/to/your/myapp.log
替換為實際的日志文件路徑。
要測試日志輪轉是否正常工作,可以使用以下命令手動運行logrotate
:
sudo logrotate -f /etc/logrotate.d/myapp
這將立即執行日志輪轉。檢查日志文件是否已按照配置文件中的設置進行了輪轉。
現在,每天都會自動進行日志輪轉。logrotate
會將舊的日志文件壓縮并保留7天。當然,你可以根據需要調整這些設置。