在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天。当然,你可以根据需要调整这些设置。


