背景
很多运维会熟练的使用shell来做一些自动化的事情,python有版本差异,很多情况下还是shell感觉方便些。
但是shell本身输出的日志并不是十分的直观,具体的时间戳等等,如果封装下原本的echo指令,会方便许多
具体实施
废话不说上代码
代码路径:/usr/local/test/echo_models
#日志格式化输出,主要提供ERROR和INFO等级的错误输出
finalParam="";finalTmp="";finalValue="";
function initParam() {
finalParam="";finalTmp="";finalValue="";
for param in "$@"; do
if [ x"`echo "x$param" | sed "s/^x-.*$/yes/"`" == "xyes" ]; then
finalTmp=$finalParam
finalParam="$finalTmp $param"
else
finalValue="$param"
fi
done
}
#echo格式重定义,echoInfo正常输出 echoError则退出当前脚本
function echoInfo() {
Local_Time=`date +"%Y-%m-%d_%H:%M:%S"`
initParam "$@"
echo -e "\033[32m$finalParam"[INFO] ${Local_Time} $finalValue" \033[0m"
}
#错误信息输出
function echoError() {
Local_Time=`date +"%Y-%m-%d_%H:%M:%S"`
initParam "$@"
echo -e "\033[31m${finalParam}"[ERROR] ${Local_Time} $finalValue" \033[0m"
echo -e "\033[31m${finalParam}"[ERROR] Exit beacuse of triggered echoError Module" \033[0m"
exit 1
}
#警告信息输出
function echoWarning(){
Local_Time=`date +"%Y-%m-%d_%H:%M:%S"`
initParam "$@"
echo -e "\033[33m$finalParam"[WARNING] ${Local_Time} $finalValue" \033[0m"
}
总结下:info,warning,error三大级别,分别是绿色,黄色和红色字体
包含了执行时间和级别的输出,可以做到一目了然,事半功倍
出现Error会默认退出,这个可以自行更改哈
具体使用
调用代码
代码路径:/usr/local/test/test.sh
. Basic
echoInfo "这是一条Info"
echoWarning "这是一条Warning"
echoError "这是一条Error"
执行效果
总结
有兴趣的,可以适当加上些其他功能,比如JobName这种,在多线程环境里面也有助于日志的分析。