日志轮替

日志的命名规则

存在dateext参数

EX: XX-20160923

无参数

t -> t.1 -> t.2 ,以此轮替

日志轮替文件在/etc/logtotate.conf

EX:

把appache服务加入日志轮替

绝对路径

/usr/local/apache2/logs/access_log

{

daily 每天备份

create 创建新的日志

rotate 30 保留30天

}

logrotate 命令

-v 显示日志轮替过程

-f 强制日志轮替



可以使用时间戳来判断哪个日志文件是最先创建的,从而进行删除。以下是一个简单的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> #include <sys/stat.h> #include <string.h> #define LOG_FILE_PREFIX "./log_" #define LOG_FILE_SUFFIX ".txt" #define MAX_LOG_FILES 10 int main() { // 获取当前时间戳 time_t now = time(NULL); // 构造日志文件名 char log_file_name[100]; sprintf(log_file_name, "%s%ld%s", LOG_FILE_PREFIX, now, LOG_FILE_SUFFIX); // 创建新的日志文件 FILE *log_file = fopen(log_file_name, "w"); if (log_file == NULL) { printf("Failed to create log file!\n"); exit(1); } // 关闭日志文件 fclose(log_file); // 获取日志文件列表 struct stat st; char cmd[100]; sprintf(cmd, "ls %s*%s | sort -n", LOG_FILE_PREFIX, LOG_FILE_SUFFIX); FILE *fp = popen(cmd, "r"); if (fp == NULL) { printf("Failed to execute command!\n"); exit(1); } // 读取日志文件列表 char log_files[MAX_LOG_FILES][100]; int i = 0; while (fgets(log_files[i], 100, fp) != NULL) { // 去掉换行符 log_files[i][strlen(log_files[i]) - 1] = '\0'; // 记录文件信息 stat(log_files[i], &st); time_t file_time = st.st_mtime; // 如果文件是最先创建的,就删除它 if (i >= MAX_LOG_FILES - 1) { remove(log_files[0]); for (int j = 0; j < i - 1; j++) { strcpy(log_files[j], log_files[j + 1]); } i--; } // 插入新的文件 if (now < file_time) { for (int j = i - 1; j >= 0; j--) { strcpy(log_files[j + 1], log_files[j]); } strcpy(log_files[0], log_file_name); i++; break; } i++; } // 输出日志文件列表 printf("Log files:\n"); for (int j = 0; j < i; j++) { printf("%s\n", log_files[j]); } // 关闭文件指针 pclose(fp); return 0; } ``` 这个程序会在当前目录下创建一个新的日志文件,然后列出所有以 `./log_` 开头、以 `.txt` 结尾的文件,并根据它们的创建时间戳来判断哪些文件是最先创建的。如果文件列表中的文件数超过了 `MAX_LOG_FILES`,就删除最先创建的文件。最后输出日志文件列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值