久成视频在线观看免费-先锋影音资源影音中在线不卡-久久精品—区二区三区美女-久久国产免费一区二区三区

<track id="icesm"></track>

    1. 龍巖易富通網(wǎng)絡(luò)科技有限公司

      龍巖小程序開發(fā),龍巖分銷系統(tǒng)

      nginx日志按天生成&定期刪除日志

      2017.03.10 | 1774閱讀 | 0條評(píng)論 | linux

      問題:nginx會(huì)按照nginx.conf的配置生成access.log和error.log,隨著訪問量的增長(zhǎng),日志文件會(huì)越來越大,既會(huì)影響訪問的速度(寫入日志時(shí)間延長(zhǎng)),也會(huì)增加查找日志的難度,nginx沒有這種按天或更細(xì)粒度生成日志的機(jī)制。所以下面介紹兩種方法:1.寫腳本,通過定時(shí)任務(wù)按天重命名日志、重啟nginx的方法實(shí)現(xiàn)(有重啟失敗的風(fēng)險(xiǎn))2.通過工具cronolog實(shí)現(xiàn)。推薦方法二。


      1.方法一:創(chuàng)建分割日志文件的腳本,添加定時(shí)任務(wù)


      1.1寫腳本:重命名日志文件、重啟nginx


      例如存放路徑:/usr/local/nginx/sbin/cut_nginx_logs.sh,按天分割具體內(nèi)容:


      #!/bin/bash

      #function:cut nginx log files


      #set the path to nginx log files

      log_files_path="/data/nginxlog/"

      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="/usr/local/nginx/sbin/nginx"

      #Set how long you want to save

      save_days=30

      ############################################

      #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 30 days ago nginx log files

      find $log_files_path -mtime +$save_days -exec rm -rf {} \; 


      #restart nginx

      $nginx_sbin -s reload


      1.2.使用crontab添加定時(shí)任務(wù)


      //打開定時(shí)任務(wù)

      crontab -e

      //進(jìn)入編輯模式

      i

      //添加定時(shí)任務(wù)

      00 00 * * * /bin/sh  /usr/local/nginx/sbin/cut_nginx_logs.sh

      //保存退出

      :wq!

      //重啟crontab服務(wù)

      /etc/init.d/crond restart

      //查看定時(shí)任務(wù),就會(huì)看到你添加的內(nèi)容了

      crontab -l


      2. 方法二:通過cronolog工具實(shí)現(xiàn)


      2.1 下載安裝cronolog

      2.1.2 安裝

      1.解壓縮

      # tar zxvf cronolog-1.6.2.tar.gz

      2.進(jìn)入安裝文件所在目錄

      # cd cronolog-1.6.2

      3.運(yùn)行安裝

      # ./configure

      # make

      # make install

      4.查看cronolog安裝后所在目錄(驗(yàn)證安裝是否成功)

      # which cronolog

      一般情況下顯示為:/usr/local/sbin/cronolog


      2.2 使用cronolog

      2.2.1.創(chuàng)建命名管道

      mkfifo /usr/local/nginx/access_log_pipe


      2.2.2 配置cronolog,日期按天


      如果按小時(shí)使用access_%Y-%m-%d-%H.log;如果按分鐘使用access_%Y-%m-%d-%H-%M.log


      2.2.3 修改配置/usr/local/nginx/conf/nginx.conf

      ...

      access_log  /usr/local/nginx/access_log_pipe  main;

      ...

      nohup cat /usr/local/nginx/access_log_pipe | /usr/local/sbin/cronolog /usr/local/nginx/logs/access-%Y-%m-%d.log &


      2.2.4 重啟nginx


      cd /usr/local/nginx/sbin

      ./nginx -s reload


      2.2.5 查看效果


      [root@app2 /]# cd /usr/local/nginx/logs/

      [root@app2 logs]# ll

      total 3544

      -rw-r--r-- 1 root root       0 Oct  1 07:20 8099.access.log

      -rw-r--r-- 1 root root 3599534 Oct  1 07:58 access-2016-10-01.log

      -rw-r--r-- 1 root root     235 Oct  1 07:20 error.log

      -rw-r--r-- 1 root root       5 Oct  1 06:34 nginx.pid


      2.3 定期刪除日志


      2.3.1 新建sh,刪除5天前的


      [root@app2 sh]# pwd

      /usr/local/nginx/sh

      [root@app2 sh]# vi delete_nginx_logs.sh 


      添加內(nèi)容


      #set the path to nginx log files

      log_files_path="/usr/local/nginx/logs/"

      save_days=5

      #delete ? days ago nginx log files

      find $log_files_path -mtime +$save_days -exec rm -rf {} \;


      2.3.2 添加定時(shí)任務(wù)


      [root@localhost sh]# crontab -e

      00 00 * * * /bin/sh  /usr/local/nginx/sh/delete_nginx_logs.sh


      贊 (

      發(fā)表評(píng)論