linux系統上nginx配置按天生成日志文件


nginx日志默認把日志都寫到一個文件中,這樣不方便管理,而且文件容量會越來越大,所以為了方便管理分析日志把日志按天切割,即每天生成一個新的日志文件。

實現步驟

1. 找到nginx日志文件
我的文件在/usr/local/nginx/logs這個路徑下,有個access.log文件就是nginx的日志文件

2. 進入該路徑創建個sh文件(稱為批處理日志文件)
touch part_log.sh(文件名自定義,后綴.sh即可)

3. 編輯part_log.sh文件。輸入如下內容:
  vim part_log.sh

D=$(date +%Y-%m-%d) LOGS_PATH=/usr/local/nginx/logs mv ${LOGS_PATH}/access.log ${LOGS_PATH}/${D}.log kill -USR1 $(cat/usr/local/nginx/logs/nginx.pid)

說明:

  • 定義一個D變量並把當前系統時間賦值給D
  • 定義一個變量LOGS_PATH用來存放日志的路徑
  • 使用mv命令把access.log日志文件, 以時間格式重命名。 這樣nginx又會生成一個新的access.log文件
  • kill -USR1 切換日志文件。語法:kill -USR1 主進程號

 

 

4. 設置好腳本使用定時器每天23:59跑一次就好了
編輯定時器
crontab -e
輸入如下內容
59 23 * * * sh /usr/local/nginx/logs/cutlog.sh > /data/bak.log 2>&1
查看定時器內容
crontab -l

 

 

crontab時間格式內容

*    *    *    *    *    command
M    H    D    m    d    command
分   時   日   月   周   命令
第1列表示分鍾1~59 每分鍾用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令或腳本內容  

5. 定時刪除以前的日志
每天生成一個日志文件時間久了會產生很多文件,所以需要定期的清理一下舊的文件,
創建clear.sh文件,輸入如下命令

find /usr/local/nginx/logs/ -mtime +7 -name "lottery_api_*.log" -exec rm -f {} \;(表示保留7天前的日志文件)

說明:

  • find:查找,liunx內置命令

  • /data/server/nginx/logs/:日志所在目錄;

  • -mtime:標准語句寫法;

  • +10:查找10天前的文件,這里用數字代表天數;

  • "*.log":log文件;

  • -exec:固定寫法;

  • rm -rf:強制刪除文件,包括目錄;

  • {} \; :固定寫法

連起來的意思就是,查找指定目錄下10天前的*.log文件,然后刪掉。

編輯好腳本后按照第四步加入到定時器中就好了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM