應用日誌需要定期清理,否則大量日誌擠占儲存空間將導致應用功能異常。日誌清理功能可以在程式碼中實現。此外,本文介紹一種方案,僅需簡單配置即可實現定期清理SAE應用的日誌。
方案概述
藉助應用運行環境中的Cron工具,根據使用者的定時任務配置,自動執行日誌清理任務。
操作步驟
通過程式碼封裝部署的應用
針對不同的作業系統版本,安裝和配置Cron工具的方法如下:
應用運行環境對應的作業系統版本,請參見使用程式碼封裝部署應用。
Debian作業系統
安裝Cron工具並配置定時任務
在建立應用或部署應用時,应用部署方式選擇代码包部署,點擊设置代码包部署,開啟自定义运行环境设置(包括预装工具、下载/修改文件、安装运行时依赖/扩展等),輸入以下命令:
#!/bin/bash set -o errexit set -o nounset set -o pipefail # 安裝Cron工具: apt-get update || true apt-get install -y cron # 配置定時任務(詳細資料請參見本文的定時任務參數說明): echo "0 * * * * root find /home/admin/logs/* -mtime +7 -name '*.log' -exec rm -rf {} \;">>/etc/crontab # 每小時執行,刪除超過7天未發生修改的記錄檔。 # 為了便於快速驗證效果,可以採用如下配置: # echo "* * * * * root find /home/admin/logs/* -mmin +1 -name '*.log' -exec rm -rf {} \;">>/etc/crontab # 每分鐘執行,刪除超過1分鐘未發生修改的記錄檔。啟動Cron工具
在建立應用或部署應用時,在应用生命周期管理地區,開啟启动后处理(PostStart设置),輸入以下命令:
service cron start
CentOS作業系統
安裝Cron工具並配置定時任務
在建立應用或部署應用時,应用部署方式選擇代码包部署,點擊设置代码包部署,開啟自定义运行环境设置(包括预装工具、下载/修改文件、安装运行时依赖/扩展等),輸入以下命令:
#!/bin/bash # 運行環境中內建Cron工具,無需安裝。 # 配置定時任務(詳細資料請參見本文的定時任務參數說明): echo "0 * * * * root find /home/admin/logs/* -mtime +7 -name '*.log' -exec rm -rf {} \;">>/etc/crontab # 每小時執行,刪除超過7天未發生修改的記錄檔。 # 為了便於快速驗證效果,可以採用如下配置: # echo "* * * * * root find /home/admin/logs/* -mmin +1 -name '*.log' -exec rm -rf {} \;">>/etc/crontab # 每分鐘執行,刪除超過1分鐘未發生修改的記錄檔。啟動Cron工具
在建立應用或部署應用時,在应用生命周期管理地區,開啟启动后处理(PostStart设置),輸入以下命令:
/sbin/crond start
通過鏡像部署的應用
在構建鏡像階段,自行安裝Cron工具並配置定時任務。
在建立應用或部署應用時,在應用生命週期管理地區,開啟啟動後處理(PostStart設定),輸入以下命令:
基於Debian作業系統的鏡像:
service cron start基於CentOS作業系統的鏡像:
/sbin/crond start
定時任務參數說明
關於配置定時任務的命令,詳細說明如下:
echo "0 * * * * root find /home/admin/logs/* -mtime +7 -name '*.log' -exec rm -rf {} \;">>/etc/crontab/etc/crontab:定時任務的設定檔。0 * * * *:Crontab運算式,用於配置定時任務的執行時間,可自訂,格式如下:f1 f2 f3 f4 f5其中
f1表示分鐘,f2表示小時,f3表示一個月份中的第幾日,f4表示月份,f5表示一個星期中的第幾天。當
f1為*時,表示每分鐘都要執行程式,f2為*時,表示每小時都要執行程式,以此類推。常見的Crontab運算式如下。
執行時間
格式
每分鐘定時執行一次
* * * * *
每小時定時執行一次
0 * * * *
每天定時執行一次
0 0 * * *
每周定時執行一次
0 0 * * 0
每月定時執行一次
0 0 1 * *
root:執行定時任務的使用者。find /home/admin/logs/* -mtime +7 -name '*.log' -exec rm -rf {} \;:表示找到/home/admin/logs目錄下所有記錄檔,並刪除其中超過7天未發生修改的檔案。-mtime表示天,-mmin表示分鐘。