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