pm2按日期切割日志


使用pm2管理node應用的進程時,進程運行期間的日志會一直往一個文件中寫入。

默認的情況下會寫入~/.pm2/logs/xxx-id.out 和 ~/.pm2/logs/xxx-id.err中,我們可以在向pm2注冊該應用時,手動指定日志路徑和文件

例如: 應用啟動文件為app.js 首次注冊該應用,pm2 start app.js --name myapp -o ./logs/myapp.out -e ./logs/myapp.err

這樣就會在當前目錄下的logs目錄中生成myapp.out 和 myapp.err兩個文件,日志將會寫入這兩個文件中。

但是一旦應用的日志量很大,長時間運行必然會使myapp.out這個文件無限增大。

打開日志文件很慢,日志跟蹤也越來越麻煩。 一般理想的做法是按日期去分割日志,但是目前的pm2好像沒有提供這項功能(不知道是否有大神知道如何配置),我們只好通過某種機制去實現按日期寫日志。

我使用的系統是centos, 可以配合定時任務管理器crontab實現。 基本的思想是在每天某一個時間,

例如凌晨3點鍾,將上一天的日志改成,以上一天時間命名的日志文件中,然后新建一個日志文件,然后讓pm2將日志文件重新定位到新的日志文件中

首先,需要一個切分日志的腳本cutlog.sh

export PATH=$PATH:/usr/local/bin
CURPATH=/root/.pm2/logs
LOGPATH=$CURPATH
logFile=$LOGPATH/app-out.log
yesterday=`date -d last-day "+%Y%m%d"`
logOfLastDay=$LOGPATH/$yesterday.log
mv $logFile $logOfLastDay
touch $logFile
pm2 reloadLogs
//刪除5天前的文件
fivedaysago=`date -d "5 days ago" "+%Y%m%d"`
logOfFiveDaysAgo=$LOGPATH/$fivedaysago.log
rm -rf $logOfFiveDaysAgo

然后注冊定時任務

使用crontab -e編輯定時任務

先聲明必要的環境變量

SHELL=/bin/bash

PATH=/bin:/usr/bin:/usr/local/bin

0 3 * * * sh /root/.pm2/logs/cutlog.sh (使用cutlog.sh的絕對路徑) 表示每天凌晨三點鍾執行分割日志的腳本 然后重啟crond服務

Crontab重啟

Linux:service crond restart 或者/etc/init.d/crond restart

ubuntu: sudo service cron restart

Mac:sudo /usr/sbin/cron restart

  

cutlog.sh文件要有執行權限

可以用chmod命令修改

chmod 755 cutlog.sh

-rwxr-xr-x 1 root root  202 10月 11 11:33 cutlog.sh

crontab詳情請看:https://www.cnblogs.com/yangwenzhi/p/9772236.html


免責聲明!

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



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