在Linux中,可以使用logrotate
工具实现日志轮转
- 创建一个日志文件:
#include#include #include 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天。当然,你可以根据需要调整这些设置。