欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

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

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

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

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

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

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

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

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

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

1.最簡(jiǎn)單的日志記錄方式

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

echo "log message" > file

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

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

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

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

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

function log {
  local text;local logtype
  logfile=./log.txt
  logtype=$1
  text=$2
  #其實(shí)可以再將日志的格式定義為一個(gè)字符串,這樣就不用重復(fù)寫(xiě)`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è)定日志級(jí)別,輸出不同級(jí)別以上的日志,方便調(diào)試

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

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

#!/bin/bash
#可將log函數(shù)單獨(dú)放一個(gè)文件,通過(guò).命令引入,這樣就可以共用了
#. log.sh 
#設(shè)置日志級(jí)別
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)用那一行行號(hà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
}
#以下為測(cè)試
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

輸出如下:

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

5.caller的用法

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

 #!/bin/bash

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

 function1  # 腳本的第9行.

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

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

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《shell腳本實(shí)現(xiàn)分日志級(jí)別輸出的方法》,本文關(guān)鍵詞  shell,腳本,實(shí)現(xiàn),分,日志,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《shell腳本實(shí)現(xiàn)分日志級(jí)別輸出的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于shell腳本實(shí)現(xiàn)分日志級(jí)別輸出的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    成人午夜视频免费看| 中字幕一区二区三区乱码| 91porn在线视频| 久久午夜老司机| 美女性感视频久久| 人体私拍套图hdxxxx| 欧美日韩一区二区三区高清| 亚洲欧洲成人精品av97| 国产 欧美在线| 国产精品国产三级国产传播| 国产日韩欧美一区二区三区乱码| 九九九精品视频| 国产肥白大熟妇bbbb视频| 欧美电视剧在线看免费| 蜜臀a∨国产成人精品| 久操视频免费看| 欧美电影免费观看完整版| 美女一区二区三区在线观看| 国产jk精品白丝av在线观看| 日韩欧美一二三区| 捆绑变态av一区二区三区| 香蕉视频久久久| 久久久精品天堂| 国产成人综合亚洲91猫咪| 黄色片子在线观看| **欧美大码日韩| 精产国品一区二区三区| 欧美日本精品一区二区三区| 日韩精品一二三四| 91成年人网站| 欧美经典三级视频一区二区三区| 国产成人精品一区二区三区网站观看| 久久噜噜色综合一区二区| 综合激情成人伊人| 波多野吉衣在线视频| 日韩一区二区三区观看| 久久99国产精品久久99| www.97视频| 亚洲一区在线免费观看| 欧美 变态 另类 人妖| 久久久久久久综合日本| 成人综合在线观看| 欧美日韩综合不卡| 裸体健美xxxx欧美裸体表演| 午夜三级在线观看| 亚洲在线观看免费| 亚洲国产日韩一区无码精品久久久| 国产日韩精品一区二区三区| k8久久久一区二区三区| 91麻豆精品国产综合久久久久久| 久久av中文字幕片| 精品国产精品国产精品| 亚洲久草在线视频| 潘金莲一级淫片aaaaa| 3atv一区二区三区| 激情五月婷婷综合网| www色com| 日韩伦理av电影| 性活交片大全免费看| 精品免费国产一区二区三区四区| 国产伦精品一区二区三区免费| 国产97免费视频| 亚洲一区二区不卡免费| 亚洲午夜福利在线观看| 国产精品久久久久久久久久免费看| 91首页免费视频| 日韩视频一区二区三区在线播放 | 日本中文字幕免费在线观看| 一区二区三区在线观看视频| 中出视频在线观看| 国产精品网站在线观看| 在线观看欧美一区二区| 欧美精品一区视频| www.视频一区| 日韩情涩欧美日韩视频| 国产成人99久久亚洲综合精品| 欧美在线999| 另类小说综合欧美亚洲| 国产精品成人免费观看| 三级影片在线观看欧美日韩一区二区| 国产免费嫩草影院| 亚洲综合自拍偷拍| 老司机福利在线观看| 亚洲电影欧美电影有声小说| 国产真人真事毛片视频| 亚洲一区欧美一区| 欧美激情视频二区| 亚洲国产一区在线观看| 国产3级在线观看| 爽爽淫人综合网网站| 99鲁鲁精品一区二区三区| 午夜精品久久久久久久99水蜜桃| 国产无遮挡在线观看| 午夜精品久久久久久久久久久| 久久噜噜色综合一区二区| 日韩激情在线观看| 色哟哟国产精品| 国模冰冰炮一区二区| 欧美日本一区二区三区四区| av午夜一区麻豆| 久久久久国产一区二区三区四区| 美女日批在线观看| 国产精品视频在线看| 国精产品一区一区三区免费视频| 亚洲精品国产精华液| 最新日韩免费视频| 青青草精品视频| 色先锋久久av资源部| 国产suv一区二区三区88区| 91精品国产一区二区人妖| 99精品1区2区| 国产精品网站一区| 日本性高潮视频| 日本sm残虐另类| 欧美人妇做爰xxxⅹ性高电影| 岛国av在线一区| 26uuu另类欧美| 精品成人无码一区二区三区| 午夜精品视频一区| 欧美日韩一区二区不卡| 91亚洲资源网| 日韩一区日韩二区| 肉色超薄丝袜脚交69xx图片| 久久99精品久久久久久动态图| 色综合久久久久综合99| 成人av在线资源网| 国产精品丝袜黑色高跟| 九一在线免费观看| 韩国在线一区二区| 精品日韩一区二区| 偷拍女澡堂一区二区三区| 亚洲va欧美va天堂v国产综合| 国产一二三区精品| 国内精品免费**视频| 亚洲精品在线电影| 中文字幕在线1| 人人狠狠综合久久亚洲| 日韩情涩欧美日韩视频| 中文乱码人妻一区二区三区视频| 亚洲成av人影院| 欧美日韩国产美| 丝袜熟女一区二区三区| 午夜视频一区在线观看| 日韩欧美国产午夜精品| 精品人妻一区二区三区视频| 日产国产欧美视频一区精品| 日韩一级片在线播放| 成人乱码一区二区三区av| 美美哒免费高清在线观看视频一区二区| 这里只有精品免费| 人妻av一区二区| 精品一区二区三区香蕉蜜桃 | 亚洲午夜精品17c| 在线成人免费视频| 黄瓜视频污在线观看| 久久爱另类一区二区小说| 中文字幕av不卡| 欧美亚洲日本在线| 97se亚洲国产综合自在线观| 一区二区三区日韩欧美| 欧美蜜桃一区二区三区| 天堂www中文在线资源| 日本不卡一区二区| 精品国产免费一区二区三区香蕉| 蜜桃av乱码一区二区三区| 国产一区91精品张津瑜| 国产精品久久久久7777按摩| 色婷婷狠狠综合| 国产乱淫av片| 日韩二区三区四区| 日韩精品中文字幕一区| 911国产在线| 91免费国产在线观看| 五月激情六月综合| 久久久久久亚洲综合影院红桃| 久久福利免费视频| 性生交大片免费看l| 性做久久久久久久免费看| 久久女同精品一区二区| 亚洲天堂黄色片| 国产精品熟妇一区二区三区四区| 免费成人结看片| 中文一区二区在线观看| 欧美丝袜丝nylons| www.色多多| 99久久99久久久精品齐齐| 天天影视色香欲综合网老头| 久久精品一级爱片| 色婷婷亚洲精品| 欧美大片免费播放器| 国产成人免费视频网站| 亚洲bt欧美bt精品777| 久久亚洲影视婷婷| 91久久精品一区二区二区| 内射中出日韩无国产剧情| 懂色av中文一区二区三区 | 最新日韩在线视频| 欧美一区二区在线播放| 小向美奈子av| 伊人网综合视频|