说明
很多时候我们写shell脚本的时候需要输出日志来判断是否执行成功,或者在脚本执行失败的时候快速定位问题,而输出日志有时候需要我们来人为定义日志格式
利用脚本定义日志格式
要求如下:
- 时间戳
- 有不同日志级别
看看陈大佬怎么写
#!/bin/bash logger() { TIMESTAMP=$(date +'%Y-%m-%d %H:%M:%S') case "$1" in debug) printf "\e[1;34m===================== ${TIMESTAMP} =====================\e[0m\n" printf "\e[7;36m[DEBUG] $2 \e[0m\n" #echo -e "$TIMESTAMP \033[36mDEBUG $2\033[0m" ;; info) printf "\e[1;34m===================== ${TIMESTAMP} =====================\e[0m\n" printf "\e[7;32m[INFO] $2 \e[0m\n" #echo -e "$TIMESTAMP \033[32mINFO $2\033[0m" ;; warn) printf "\e[1;34m===================== ${TIMESTAMP} =====================\e[0m\n" printf "\e[7;33m[WARNING] $2 \e[0m\n" #echo -e "$TIMESTAMP \033[33mWARN $2\033[0m" ;; error) printf "\e[1;34m===================== ${TIMESTAMP} =====================\e[0m\n" printf "\e[7;31m[ERROR] $2 \e[0m\n" #echo -e "$TIMESTAMP \033[31mERROR $2\033[0m" ;; *) ;; esac } logger debug "This is a debug message" logger info "This is a info message" logger warn "This is a warn message" logger error "This is a error message"
在这一个log格式中,输出的结果是如下这样带颜色的日志
===================== 2023-05-12 15:31:32 ===================== [DEBUG] This is a debug message ===================== 2023-05-12 15:31:32 ===================== [INFO] This is a info message ===================== 2023-05-12 15:31:32 ===================== [WARNING] This is a warn message ===================== 2023-05-12 15:31:32 ===================== [ERROR] This is a error message # 以上日志其实都是带颜色的
其他想法
#!/bin/bash logger () { TIME_NOW=$(date +'%F %T') RES_COL=90 MOVE_TO_COL="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m" SETCOLOR_FAILURE="echo -en \\033[1;31m" SETCOLOR_WARNING="echo -en \\033[1;33m" SETCOLOR_NORMAL="echo -en \E[0m" echo -n "[${TIME_NOW}]" "$1" && $MOVE_TO_COL echo -n "[" if [ $2 = "success" -o $2 = "0" ] ;then ${SETCOLOR_SUCCESS} echo -n $" OK " elif [ $2 = "failure" -o $2 = "1" ] ;then ${SETCOLOR_FAILURE} echo -n $"FAILED" else ${SETCOLOR_WARNING} echo -n $"WARNING" fi ${SETCOLOR_NORMAL} echo -n "]" echo } logger "This is a success1 message" success logger "This is a failure22 message" failure logger "This is a warning333 message" warning
在这一个log格式中,输出的结果是如下这样带颜色的日志
[2023-05-12 15:31:32] This is a success1 message [ OK ] [2023-05-12 15:31:32] This is a failure22 message [FAILED] [2023-05-12 15:31:32] This is a warning333 message [WARNING]