婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > shell腳本實(shí)現(xiàn)分日志級別輸出的方法

shell腳本實(shí)現(xiàn)分日志級別輸出的方法

熱門標(biāo)簽:昆明電銷機(jī)器人價格 400的電話一般從哪里辦理 春運(yùn)地圖標(biāo)注app 益陽400電話申請辦理流程 地圖標(biāo)注人員分布 梧州防封電銷卡 江西全自動外呼系統(tǒng)報價 上海機(jī)器人外呼系統(tǒng)哪家好 怎么用百度地圖標(biāo)注坐標(biāo)

shell腳本如何優(yōu)雅的記錄日志信息,下面讓我們一步一步,讓shell腳本的日志也變得高端起來,實(shí)現(xiàn)如下功能

①設(shè)定日志級別,實(shí)現(xiàn)可以輸出不同級別的日志信息,方便調(diào)試

②日志格式類似為:[日志級別] 時間 funcname:函數(shù)名 [lineno:行號] 日志信息

③不同級別,設(shè)定不同顏色

④讓其變?yōu)楹瘮?shù)庫文件,重用代碼

下面看看我用shell記錄日志的進(jìn)化之路

1.最簡單的日志記錄方式

對于剛?cè)腴T的同學(xué),記錄日志一般用echo加重定向方式,這應(yīng)該是最原始的方式了^_^

echo "log message" > file

2.簡單函數(shù)封裝,簡化重復(fù)寫重定向到日志文件

當(dāng)你想記錄的日志變多,你得重復(fù)的寫echo “”>$logfile,這也是件挺麻煩的事情,于是我就寫了個log函數(shù),這樣修改的時候也比較方便。

log() {
  msg=$1
  echo $msg > log.file
}

3.實(shí)現(xiàn)日志的級別不同顏色輸出

某天使用某腳本的時候,報錯了確沒發(fā)現(xiàn),于是就想將報錯信息用不同顏色字體,這樣會稍微友好一點(diǎn),請看下面函數(shù)

function log {
  local text;local logtype
  logfile=./log.txt
  logtype=$1
  text=$2
  #其實(shí)可以再將日志的格式定義為一個字符串,這樣就不用重復(fù)寫`date +'%F %H:%M:%S'`\t$1\t$2\033[0m,又可以省好多代碼。
  case $logtype in 
    error)
      echo -e "\033[31m`date +'%F %H:%M:%S'`\t$1\t$2\033[0m" | tee -a $logfile;;
    info)
      echo -e "\033[32m`date +'%F %H:%M:%S'`\t$1\t$2\033[0m" | tee -a $logfile;;
    warn)
      echo -e "\033[33m`date +'%F %H:%M:%S'`\t$1\t$2\033[0m" | tee -a $logfile;;
  esac
}

4.實(shí)現(xiàn)設(shè)定日志級別,輸出不同級別以上的日志,方便調(diào)試

學(xué)了Python的日志模塊后,想著如何像python那樣,可以設(shè)定日志級別,比如設(shè)定debug,那么只有debug級別以上的日志會輸出,而且日志的格式也支持定義,常見格式 如下:[日志級別] 時間 funcname:函數(shù)名 [lineno:行號] 日志信息

請看如下的log函數(shù):大家可以將log函數(shù)放到一個單獨(dú)文件,稱為函數(shù)庫文件,然后寫腳本的時候,通過source或 . 命令引入,就想python的導(dǎo)入模塊一樣,重用log的代碼

#!/bin/bash
#可將log函數(shù)單獨(dú)放一個文件,通過.命令引入,這樣就可以共用了
#. log.sh 
#設(shè)置日志級別
loglevel=0 #debug:0; info:1; warn:2; error:3
logfile=$0".log"
function log {
    local msg;local logtype
    logtype=$1
    msg=$2
    datetime=`date +'%F %H:%M:%S'`
    #使用內(nèi)置變量$LINENO不行,不能顯示調(diào)用那一行行號
    #logformat="[${logtype}]\t${datetime}\tfuncname:${FUNCNAME[@]} [line:$LINENO]\t${msg}"
    logformat="[${logtype}]\t${datetime}\tfuncname: ${FUNCNAME[@]/log/}\t[line:`caller 0 | awk '{print$1}'`]\t${msg}"
    #funname格式為log error main,如何取中間的error字段,去掉log好辦,再去掉main,用echo awk? ${FUNCNAME[0]}不能滿足多層函數(shù)嵌套
    {  
    case $logtype in 
        debug)
            [[ $loglevel -le 0 ]]  echo -e "\033[30m${logformat}\033[0m" ;;
        info)
            [[ $loglevel -le 1 ]]  echo -e "\033[32m${logformat}\033[0m" ;;
        warn)
            [[ $loglevel -le 2 ]]  echo -e "\033[33m${logformat}\033[0m" ;;
        error)
            [[ $loglevel -le 3 ]]  echo -e "\033[31m${logformat}\033[0m" ;;
    esac
    } | tee -a $logfile
}
#以下為測試
debug () {
    log debug "there are $# parameters:$@"
}
info() {
    log info "funcname:${FUNCNAME[@]},lineno:$LINENO"
}
warn() {
    log warn "funcname:${FUNCNAME[0]},lineno:$LINENO"
}
error() {
    log error "the first para:$1;the second para:$2"
}
set -x
debug first second
set +x
info first second
warn first second 
error first second

輸出如下:

在寫這個函數(shù)的遇到一個問題就是不能用內(nèi)建變量$LINENO來取得調(diào)用的行號,只能取得log函數(shù)中定義$LINENO那一行,搜了許久找到的解決辦法是利用caller命令,關(guān)于caller命令的用法,如下:

5.caller的用法

caller命令放到函數(shù)中, 將會在stdout上打印出函數(shù)的調(diào)用者信息.,caller命令也可以在一個被source的腳本中返回調(diào)用者信息. 當(dāng)然這個調(diào)用者就是source這個腳本的腳本. 就像函數(shù)一樣, 這是一個”子例程調(diào)用”.你會發(fā)現(xiàn)這個命令在調(diào)試的時候特別有用.

 #!/bin/bash

 function1 ()
 {
  # 在 function1 () 內(nèi)部.
  caller 0  # 顯示調(diào)用者信息.
 }

 function1  # 腳本的第9行.

 # 9 main test.sh
 # ^         函數(shù)調(diào)用者所在的行號.
 #  ^^^^      從腳本的"main"部分開始調(diào)用的.
 #    ^^^^^^^  調(diào)用腳本的名字.

 caller 0   # 沒效果, 因?yàn)檫@個命令不在函數(shù)中.

以上這篇shell腳本實(shí)現(xiàn)分日志級別輸出的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • shell將腳本輸出結(jié)果記錄到日志文件的實(shí)現(xiàn)
  • 輸出執(zhí)行操作和打印日志的shell腳本實(shí)例
  • Linux shell腳本輸出日志筆記整理(必看篇)

標(biāo)簽:贛州 亳州 懷化 北京 河南 惠州 九江 新疆

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《shell腳本實(shí)現(xiàn)分日志級別輸出的方法》,本文關(guān)鍵詞  shell,腳本,實(shí)現(xiàn),分,日志,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《shell腳本實(shí)現(xiàn)分日志級別輸出的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于shell腳本實(shí)現(xiàn)分日志級別輸出的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品国产乱码久久久久久免费| 91在线视频播放| 日韩欧美亚洲一区二区| 久久这里只有精品首页| 亚洲手机成人高清视频| 日韩高清不卡一区二区| 国产精品911| 欧美精品123区| 国产精品欧美一级免费| 婷婷中文字幕综合| 91亚洲资源网| 精品少妇一区二区三区在线播放 | 色综合一区二区三区| 日韩欧美在线1卡| 亚洲精品精品亚洲| 日韩中文字幕区一区有砖一区 | 日韩一级视频免费观看在线| 亚洲欧美日韩久久精品| 国内精品视频一区二区三区八戒| 欧美唯美清纯偷拍| 亚洲精品乱码久久久久久久久| 国产综合色精品一区二区三区| 制服丝袜日韩国产| 亚洲一区二区三区激情| jlzzjlzz国产精品久久| 国产日韩欧美一区二区三区乱码| 青青草91视频| 日韩三级高清在线| 美女视频黄a大片欧美| 5858s免费视频成人| 午夜精品一区在线观看| 欧美日韩性生活| 亚洲一二三四在线| 欧美色倩网站大全免费| 性感美女极品91精品| 欧美精品久久99| 日韩电影在线观看电影| 欧美一区二区三区播放老司机| 丝袜美腿一区二区三区| 日韩一二三区不卡| 国产麻豆成人精品| 国产精品网曝门| 99re这里只有精品视频首页| 综合色中文字幕| 日本高清无吗v一区| 午夜精品福利久久久| 91网站视频在线观看| 一区二区三区四区在线播放| 欧美日韩国产小视频在线观看| 亚洲一区二区中文在线| 欧美精品三级在线观看| 日本强好片久久久久久aaa| 精品国产3级a| 99综合影院在线| 亚洲午夜私人影院| 亚洲精品一线二线三线| 97se狠狠狠综合亚洲狠狠| 五月婷婷久久丁香| 久久美女艺术照精彩视频福利播放| 成人精品在线视频观看| 亚洲午夜激情网页| 久久久亚洲午夜电影| 国产综合久久久久影院| 国产精品国产三级国产有无不卡 | 久久精品日韩一区二区三区| 成人久久18免费网站麻豆| 亚洲成人www| 久久亚洲欧美国产精品乐播 | 日本欧美在线看| 最新热久久免费视频| 欧美精品日韩一本| 国产精品一区二区在线看| 夜夜嗨av一区二区三区网页| 精品处破学生在线二十三| av在线不卡免费看| 蜜桃精品视频在线观看| 一区二区三区色| 国产午夜精品久久久久久免费视| 在线观看91视频| 成人av资源站| 国产又黄又大久久| 婷婷成人综合网| 久久综合久色欧美综合狠狠| 欧美日韩国产在线播放网站| 成人av在线播放网址| 免费不卡在线视频| 香港成人在线视频| 亚洲免费在线视频一区 二区| 69av一区二区三区| 91成人看片片| 99久久99久久精品国产片果冻| 久久精品国产久精国产| 亚洲国产成人av好男人在线观看| 日本一区二区三区四区| 欧美日韩三级在线| 欧美亚洲综合一区| 日本大香伊一区二区三区| av男人天堂一区| 99国产欧美另类久久久精品| 国产91精品一区二区麻豆网站 | 蜜桃视频一区二区| 日韩av中文字幕一区二区| 亚洲图片欧美视频| 洋洋av久久久久久久一区| 亚洲乱码中文字幕综合| 一区二区在线观看视频| 亚洲情趣在线观看| 一区二区久久久| 亚洲成av人在线观看| 亚洲一区国产视频| 中文在线一区二区| 国产精品福利一区二区三区| 国产精品福利一区二区三区| 成人欧美一区二区三区| 亚洲欧美韩国综合色| 亚洲第一会所有码转帖| **性色生活片久久毛片| 亚洲福利国产精品| 婷婷中文字幕综合| 国产在线精品不卡| 成人免费av在线| 色成人在线视频| 欧美日本在线视频| 日韩欧美视频在线| 欧美妇女性影城| 精品粉嫩超白一线天av| 欧美国产1区2区| 亚洲伊人伊色伊影伊综合网| 美日韩一区二区三区| 成a人片国产精品| 久久人人爽人人爽| 蜜桃视频在线一区| 666欧美在线视频| 亚洲国产乱码最新视频| 色欧美片视频在线观看| 国产精品午夜免费| 成人蜜臀av电影| 欧美激情一区在线观看| 国产一区二区三区美女| 2020国产精品久久精品美国| 精品一区二区三区香蕉蜜桃| 欧美大片在线观看| 日韩精品三区四区| 日韩你懂的在线播放| 另类中文字幕网| 精品久久久三级丝袜| 韩国一区二区在线观看| 精品国产欧美一区二区| 久久99最新地址| 国产日韩一级二级三级| 国产福利不卡视频| 国产精品天美传媒| 99精品久久99久久久久| 亚洲人精品一区| 欧美影院一区二区| 日韩黄色片在线观看| 日韩一级成人av| 国产精品一二一区| 中文字幕亚洲不卡| 欧美日韩综合在线| 精品一区二区在线观看| 中文字幕欧美日韩一区| 91免费视频网| 日韩精品91亚洲二区在线观看 | 强制捆绑调教一区二区| 久久综合九色欧美综合狠狠| 波多野洁衣一区| 亚洲国产精品一区二区久久 | 91丨九色porny丨蝌蚪| 亚洲国产另类精品专区| 日韩一卡二卡三卡四卡| 国产69精品久久99不卡| 一区二区三区日韩精品| 精品久久久久久久久久久久久久久| 国产一区二区三区最好精华液| 亚洲日穴在线视频| 日韩欧美一级精品久久| 99久久99久久免费精品蜜臀| 日韩成人免费看| 国产精品久99| 日韩女优制服丝袜电影| 99re在线精品| 国内精品免费在线观看| 亚洲自拍偷拍九九九| 国产日韩欧美精品综合| 欧美精品色综合| 一本大道久久精品懂色aⅴ| 精品一区二区在线看| 一区二区在线观看视频在线观看| 精品日韩在线观看| 欧美色图12p| 91在线播放网址| 国产美女精品人人做人人爽| 午夜精品久久久久久久99水蜜桃| 国产色91在线| 26uuu久久天堂性欧美| 欧美高清一级片在线| 欧美性受极品xxxx喷水| 播五月开心婷婷综合| 国产麻豆精品theporn|