无聊中看到了团子的小屋写的Bash日志库logdotsh。下下来大致看了一下,觉的不错。我本是Bash新手,正需要这种项目练练手,看完以后收获很多。
大致上我知道Bash里没有库的概念,所以一般都单独一个配置脚本,用source命令进行包含。里面提供各种功能函数供用户调用。logdotsh也是这种库的形式,你用用它的时候必须在自己的脚本中包含它。
. ./log.sh
但Bash里有没提供像C/C++那样的#ifndef/#endif防止重复包含文件,所以里面设置了全局变量_log_set_default,每次检查是否已经包含,防止覆盖内部变量。
if [ -z "$_log_set_default" ]; then
_log_set_default=1
...
fi
接下来是各种日志输出接口:do_log、log_msg、debug_msg、info_msg、warn_msg、error_msg等。每次调用先保存在/tmp日志文件上,再根据level觉得是否打印在屏幕上(有对应的颜色区分)。
我看到了从未遇到的Bash数组,看了ABS的介绍,感觉很不错。