#!/bin/bash
#function:cut nginx log files
#set the path to nginx log files
log_files_path="/app/servers/nginx/logs/"
log_files_dir=${log_files_path}
#set nginx log files you want to cut
log_files_name=(access )
#set the path to nginx.
nginx_sbin="/app/servers/nginx/sbin/nginx"
#Set how long you want to save
save_days=90
############################################
#Please do not modify the following script #
############################################
#mkdir -p $log_files_dir
log_files_num=${#log_files_name[@]}
#cut nginx log files
for((i=0;i<$log_files_num;i++));do
mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}${log_files_name[i]}.log_$(date -d "yesterday" +"%Y-%m-%d")
done
#delete 90 days ago nginx log files
find $log_files_path -mtime +$save_days -exec rm -rf {} \;?
#restart nginx
sudo $nginx_sbin -s reload
使用`logrotate`按月切割Nginx日志并删除6个月前的日志,请按照以下步骤操作:
?
1. 首先,创建一个用于日志切割和删除的配置文件。在`/etc/logrotate.d`目录中创建一个名为`nginx`的文件,并添加以下内容:
/path/to/nginx/logs/*.log {
? ? daily?
? ? rotate 12?
? ? compress?
? ? delaycompress?
? ? missingok?
? ? notifempty?
}
请将`/path/to/nginx/logs`替换为您的Nginx日志文件夹路径。
?
2. 然后,编辑`/etc/logrotate.conf`文件,将以下行添加到文件末尾:
# Delete logs older than 6 months?
/var/log/nginx/*.log.*.gz {
? ? missingok?
? ? notifempty?
? ? delete 6m?
}
请根据您的实际情况调整日志文件路径。
?
3. 保存并退出文件。现在,`logrotate`将根据配置文件中的设置自动切割和压缩Nginx日志,并删除6个月前的日志。
?
要立即运行`logrotate`,请使用以下命令:
logrotate -f /etc/logrotate.conf?
这将强制`logrotate`按照配置文件中的设置处理所有日志文件。