Nginx日志切分脚本

因为学习初期都是习惯自己去解决问题没有使用工具切分日志,所以当时写了一个根据天数日志切分脚本,现在记录下。


LOG_FILE="/data/log/nginx/filter.access1.log"  
PROCESSED_LOG_FILE="/data/log/nginx/filter.access.log" 

month=$(LC_ALL=C date "+%b")
year=$(date "+%Y")

days=""
for i in {0..1}
do
  dayf=$(date -d "$i days ago" +%d)
  day="$dayf/$month/$year"

  if [ -z "$days" ]
  then
    days="$day"
  else
    days="$days|$day"
  fi
done

echo $days

grep -E $days "$LOG_FILE" > "$PROCESSED_LOG_FILE"  

# 检查新文件是否非空  
if [ -s "$PROCESSED_LOG_FILE" ]; then  
    # 如果新文件非空,询问用户是否替换原文件  
    read -p "新文件已生成且非空,是否替换原文件? (y/n) " choice  
    if [[ "$choice" == "y" || "$choice" == "Y" ]]; then  
        mv "$PROCESSED_LOG_FILE" "$LOG_FILE"  
        echo "日志文件已更新,所有包含2023的行已被删除。"  
    else  
        echo "未替换原文件,处理后的内容已保存在$PROCESSED_LOG_FILE"  
    fi  
else  
    echo "没有行被删除,原文件保持不变。"  
fi

当然如果需要安装工具切分日志的话,可以使用logrotate工具。

posted @ 2024-08-10 22:30  探出的头  阅读(3)  评论(0编辑  收藏  举报