一个简单的Shell输出日志函数

各位运维的兄弟们不知道各位在写脚本的时候,比如说写一个长时间运行在后台的脚本的时候是否有想过一个问题,我们可能涉及到输出日志的操作,那么大家是否有想过如果说我们输出的日志都是没有任何的识别,怎么办?这便是大家今天看到这篇文章的原因了,接下来我们来看看具体的实现吧。
其实这篇文章早在去年我就已经做过了,只不过是最近在翻旧脚本的时候翻到了一个脚本,发现是自己写的脚本,然后下面给大家看看脚本是干嘛用的,等下再给大家详细说一说。
#!/bin/bash
function log() {
    case $1 in
        "info")
            echo -e `date '+%Y-%m-%d %H:%M:%S'`"\t[\e[32m INFO \e[0m] $2"
            ;;
        "error")
            echo -e `date '+%Y-%m-%d %H:%M:%S'`"\t[\e[31m error \e[0m] $2"
            ;;
        *)
            echo -e `date '+%Y-%m-%d %H:%M:%S'`"\t[\e[32m INFO \e[0m] $2"
    esac
}

function check_api(){
while true;
do
    sleep 10
    nslookup www.kudevops.cn >>/dev/null
    if [ $? -eq 0 ];then
      log info "Request right" >>~/check_api.log
    else
      log error "Request error" >>~/check_api_error.log
    fi
done
}
case $1 in
   "run")
   check_api
   ;;
   "-h")
   echo "run      Perform testing"
   ;;
   "*")
   echo "-h       Get help"
   ;;
esac
从这里不难看出这是一个简单的前台运行程序,用于检查域名是否可以解析,这边可以看到我的一个函数是log,这个就是我今天给大家介绍的函数,我们下面把这个函数拿出来实战一下看看是什么样子,
#!/bin/bash
function log() {
    case $1 in
        "info")
            echo -e `date '+%Y-%m-%d %H:%M:%S'`"\t[\e[32m INFO \e[0m] $2"
            ;;
        "error")
            echo -e `date '+%Y-%m-%d %H:%M:%S'`"\t[\e[31m error \e[0m] $2"
            ;;
        *)
            echo -e `date '+%Y-%m-%d %H:%M:%S'`"\t[\e[32m INFO \e[0m] $2"
    esac
}


log info "This is yes msg!"
log error "This is no msg!"

image

这边给大家解释下,首先我们看函数,log是主函数,case使用了$1那么证明后面log函数后面又可以传进去一个参数,也就是 info和error,那么它们参数下面做了什么呢?往下看其实就是输出带颜色的字体了,我们可以看到echo后面有个$2,那么这就是shell里面的位置参数,也就是我们调用函数输入的参数,最后我们看看我的调用,可以看到调用了函数,然后使用函数下的方法 info和error,然后最后传参给$2,就是整个函数的作用了。大家可以去研究一下可以应用在什么地方,我这边就单纯的做一个简单的测试网站的脚本,这边我给大家做的例子就在上面,让后我们尝试运行一下。


[root@kubernetes-master-1 ~]# check-api run

# 因为是前台程序,所以大家可以选择合适的管理方式来托管起来,我这边就单纯的跑前台了,它的作用就是去检测我的网站是否可以被解析

[root@kubernetes-master-1 ~]# ls
anaconda-ks.cfg  check_api.log  initfiles
[root@kubernetes-master-1 ~]# cat check_api.log 
2022-09-20 01:06:58	[ INFO ] Request right
2022-09-20 01:07:08	[ INFO ] Request right
2022-09-20 01:07:18	[ INFO ] Request right
2022-09-20 01:07:28	[ INFO ] Request right
2022-09-20 01:07:38	[ INFO ] Request right

# 这是它输出的日志,我把日志路径写死了,是在运行脚本用户的加目录下,当然了错误日志也是有的。

[root@kubernetes-master-1 ~]# cat check_api_error.log 
2022-09-20 01:10:23	[ error ] Request error
2022-09-20 01:10:33	[ error ] Request error
2022-09-20 01:10:43	[ error ] Request error
2022-09-20 01:10:53	[ error ] Request error


# 这就是简单一个小脚本了,希望大家可以点赞支持一下。
posted @ 2022-09-20 01:14  Layzer  阅读(535)  评论(0编辑  收藏  举报