shell通用日志函数

为了方便调试,写了一个通用的日志函数,实现功能:

  1. 设定日志级别,实现可以输出不同级别的日志信息
  2. 日志格式类似为:[日志级别] 时间 funcname:函数名 [lineno:行号] 日志信息
  3. 不同级别,设定不同颜色

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function log {
local text;local logtype
logfile=/var/log/mylog/mylog.log
logtype=$1
text=$2
message="`date +'%F %H:%M:%S'` $1 line:$LINENO $2"
case $logtype in
error)
echo -e "\033[31m${message}\033[0m" | tee -a $logfile;;
info)
echo -e "\033[32m${message}\033[0m" | tee -a $logfile;;
warn)
echo -e "\033[33m${message}\033[0m" | tee -a $logfile;;
esac
}

使用:

1
2
3
log info "this's info log"
log error "this's error log"
log warn "this's warn log"

注:

1
2
3
4
5
local : 局部变量
$LINENO:shell 脚本行数
$1 $2 :函数参数
tee 输出到控制台和文件
\033[31m \033[0m : echo 输出颜色