应用日志需要定期清理,否则大量日志挤占存储空间将导致应用功能异常。日志清理功能可以在程序代码中实现。此外,本文介绍一种方案,仅需简单配置即可实现定期清理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表示分钟。