专业编程基础技术教程

网站首页 > 基础教程 正文

如何按天切割日志文件(日志切割命令)

ccvgpt 2025-05-05 14:18:31 基础教程 6 ℃

简单明了,直接开始,给热爱编程的你我

  • apache

修改httpd.conf对以下两行进行调整

如何按天切割日志文件(日志切割命令)

ErrorLog "| /usr/local/apache/bin/rotatelogs /data/www/logs/%Y%m%d_error.log 86400 480"

CustomLog "| /usr/local/apache/bin/rotatelogs /data/www/logs/%Y%m%d_access.log 86400 480" vcommon

使用命令rotatelogs 对日志进行切割,查找该命令的位置使用:which rotatelog

指定日志文件的位置和名称
/data/www/logs/error_log-%Y%m%d

指定分割时间:86400 默认单位为s。也就是24小时

指定分区时差:480 默认单位m,也就是8小时

  • 网站日志(PHP日志等)使用调度任务
#!/bin/bash

# 备份php-fpm 及 web的日志

# 今天的日期
#file_date=$(date +"%Y%m%d")
# 昨天的日期
file_date=$(date -d"1 day ago" +"%Y%m%d")
# php log的路径
log_path_php=/home/www/logs/
# web log的路径
log_path_web=/home/www/logs/
# 备份目录
back_path=/home/www/logs_bak/

# =================== 备份php log ========================
mv ${log_path_php}php-fpm.log ${back_path}php/php-fpm.log_${file_date}
mv ${log_path_php}php_slow.log ${back_path}php/php_slow.log_${file_date}
mv ${log_path_php}php_error.log ${back_path}php/php_error.log_${file_date}
mv ${log_path_php}${file_date}_error.log ${back_path}apache/${file_date}_error.log
mv ${log_path_php}${file_date}_access.log ${back_path}apache/${file_date}_access.log
# 主进程发送USR1信号,重新打开日志文件,否则会继续往mv后的文件写数据的。
# 原因在于:linux系统中,内核是根据文件描述符来找文件的。如果不这样操作导致日志切割失败
kill -USR1 `ps axu | grep "php-fpm: master process" | grep -v grep | awk '{print $2}'`

# =================== 备份web log ========================
# 访问日志文件名格式为 xx_access.log;错误日志文件名格式为 xx_error.log
# 通过循环自动备份不同网站的日志文件

#cd ${log_path_web}
#for file in $(ls *_access.log);
#do
#    mv ${file}{,_$file_date}
#done
# 向nginx主进程发送USR1信号,重新打开日志文件,否则会继续往mv后的文件写数据的。原因在于:linux系统中,内核是根据文件描述符来找文件的。如果不这样操作导致日志切割失败
#kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`

添加到定时调度中,每日执行

  • 定时删除日志
  • #!/bin/bash
     
    #the date 7 days ago
    Date_7=`date -d "-2 day" +%Y%m%d`
    http_log_path="/home/www/logs_bak"
     
    #clear logs
    rm -fr ${http_log_path}/apache/${Date_7}_access.log
    rm -fr ${http_log_path}/apache/${Date_7}_error.log
    rm -fr ${http_log_path}/php/php-fpm.log_${Date_7}
    rm -fr ${http_log_path}/php/php_error.log_${Date_7}
    rm -fr ${http_log_path}/php/php_show.log_${Date_7}
    

    添加到定时调度中,每日执行

    Tags:

    最近发表
    标签列表