亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > shell腳本實現分日志級別輸出的方法

shell腳本實現分日志級別輸出的方法

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

shell腳本如何優雅的記錄日志信息,下面讓我們一步一步,讓shell腳本的日志也變得高端起來,實現如下功能

①設定日志級別,實現可以輸出不同級別的日志信息,方便調試

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

③不同級別,設定不同顏色

④讓其變為函數庫文件,重用代碼

下面看看我用shell記錄日志的進化之路

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

對于剛入門的同學,記錄日志一般用echo加重定向方式,這應該是最原始的方式了^_^

echo "log message" > file

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

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

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

3.實現日志的級別不同顏色輸出

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

function log {
  local text;local logtype
  logfile=./log.txt
  logtype=$1
  text=$2
  #其實可以再將日志的格式定義為一個字符串,這樣就不用重復寫`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.實現設定日志級別,輸出不同級別以上的日志,方便調試

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

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

#!/bin/bash
#可將log函數單獨放一個文件,通過.命令引入,這樣就可以共用了
#. log.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'`
    #使用內置變量$LINENO不行,不能顯示調用那一行行號
    #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]}不能滿足多層函數嵌套
    {  
    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

輸出如下:

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

5.caller的用法

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

 #!/bin/bash

 function1 ()
 {
  # 在 function1 () 內部.
  caller 0  # 顯示調用者信息.
 }

 function1  # 腳本的第9行.

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

 caller 0   # 沒效果, 因為這個命令不在函數中.

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

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

標簽:贛州 亳州 懷化 北京 河南 惠州 九江 新疆

巨人網絡通訊聲明:本文標題《shell腳本實現分日志級別輸出的方法》,本文關鍵詞  shell,腳本,實現,分,日志,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《shell腳本實現分日志級別輸出的方法》相關的同類信息!
  • 本頁收集關于shell腳本實現分日志級別輸出的方法的相關信息資訊供網民參考!
  • 推薦文章
    高清一级片| 日韩免费在线视频| 日韩专区亚洲综合久久| 韩国三级一区| 国产亚洲免费观看| 久久精品店| 一级女性大黄生活片免费| 国产不卡福利| 久久成人亚洲| 沈樵在线观看福利| 日本特黄特色aaa大片免费| 精品国产香蕉在线播出| 一级毛片看真人在线视频| 亚洲天堂免费| 亚洲精品中文一区不卡| 国产国语对白一级毛片| 国产成人精品一区二区视频| 欧美另类videosbestsex视频 | 国产亚洲免费观看| 国产一区二区精品久久91| 九九热精品免费观看| 国产一区免费观看| 九九免费高清在线观看视频| 精品在线观看一区| 欧美a级成人淫片免费看| 午夜在线亚洲| 欧美激情影院| 国产综合91天堂亚洲国产| 一本伊大人香蕉高清在线观看| 999久久狠狠免费精品| 久久福利影视| 日韩免费在线视频| 99久久精品国产麻豆| 麻豆午夜视频| 久久久久久久免费视频| 九九精品影院| 四虎影视库国产精品一区| 一级毛片视频免费| 国产一区二区精品久久| 国产网站免费在线观看| 韩国三级视频在线观看| 四虎影视久久久免费| 亚洲第一页乱| 国产视频久久久久| 精品国产一区二区三区久久久蜜臀 | 99久久精品费精品国产一区二区| 午夜在线观看视频免费 成人| 91麻豆爱豆果冻天美星空| 成人免费网站视频ww| 在线观看成人网| 91麻豆精品国产高清在线| 精品国产一区二区三区久久久蜜臀| 韩国毛片| 尤物视频网站在线观看| 国产网站免费在线观看| 九九久久99| 四虎影视库| 亚飞与亚基在线观看| 999精品影视在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久久久久久久综合影视网| 欧美另类videosbestsex久久| 美女免费毛片| 国产精品1024在线永久免费 | 色综合久久天天综合绕观看| 高清一级毛片一本到免费观看| 日韩中文字幕一区| 国产伦精品一区二区三区在线观看 | 色综合久久手机在线| 青青久久精品| 亚欧成人乱码一区二区| 国产成人女人在线视频观看| 日韩免费在线视频| 精品毛片视频| 久久精品免视看国产成人2021| 国产一区二区精品久久91| 精品国产一级毛片| 久久久久久久久综合影视网| 久久精品欧美一区二区| 午夜家庭影院| a级精品九九九大片免费看| 亚欧成人毛片一区二区三区四区| 四虎久久精品国产| 欧美大片a一级毛片视频| 精品美女| 国产国语对白一级毛片| 国产精品免费久久| 日韩中文字幕在线播放| 日本乱中文字幕系列| 久久精品欧美一区二区| 午夜在线影院| 精品视频免费观看| 亚久久伊人精品青青草原2020| 国产激情一区二区三区| 久久精品店| 久久99中文字幕| 欧美一级视| 日韩中文字幕在线观看视频| 国产极品精频在线观看| 成人免费观看男女羞羞视频| 久久久久久久久综合影视网| 黄色免费三级| 国产91素人搭讪系列天堂| 欧美a级成人淫片免费看| 成人免费一级毛片在线播放视频| 国产欧美精品午夜在线播放| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产高清视频免费观看| 四虎影视久久久| 可以在线看黄的网站| 国产精品自拍在线| 美女免费精品视频在线观看| 毛片高清| 国产网站麻豆精品视频| 欧美a级v片不卡在线观看| 精品国产一区二区三区久久久狼| 久久国产精品只做精品| 日本在线www| 成人免费观看男女羞羞视频| 青青青草视频在线观看| 国产福利免费视频| 精品国产一区二区三区久| 免费一级片网站| 精品国产一区二区三区久久久蜜臀| 99热热久久| 韩国三级一区| 免费国产一级特黄aa大片在线| 一a一级片| 国产高清视频免费观看| 99色吧| 999久久久免费精品国产牛牛| 日本伦理黄色大片在线观看网站| 91麻豆爱豆果冻天美星空| 精品久久久久久综合网| 99热精品在线| 99久久精品国产国产毛片 | 精品视频一区二区三区免费| 台湾美女古装一级毛片| 久久久久久久久综合影视网| 久久久久久久久综合影视网| 国产国语在线播放视频| 国产极品精频在线观看| 国产麻豆精品免费视频| 国产成人精品综合| 午夜欧美成人香蕉剧场| 欧美大片aaaa一级毛片| 99久久网站| 天天做人人爱夜夜爽2020毛片| 日韩免费在线| 尤物视频网站在线观看| 久久精品店| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 超级乱淫黄漫画免费| 国产不卡福利| 九九精品影院| 一级女性大黄生活片免费| 日本免费乱人伦在线观看 | 国产视频一区二区三区四区| 精品国产香蕉在线播出| 免费一级片在线| 久久精品免视看国产成人2021| 精品视频免费在线| 国产亚洲精品aaa大片| 国产网站免费观看| 午夜欧美福利| 国产一区二区精品久久| 国产a免费观看| 亚洲 欧美 成人日韩| 欧美a级成人淫片免费看| 亚州视频一区二区| 黄视频网站免费看| 久久99中文字幕| 久久国产一久久高清| 亚久久伊人精品青青草原2020| 日本免费看视频| 黄色福利片| 国产a免费观看| 日韩中文字幕在线播放| 欧美另类videosbestsex| 黄视频网站在线观看| 四虎影视库国产精品一区| 亚洲爆爽| 亚洲精品影院一区二区| 精品美女| 99色视频在线观看| 日韩欧美一二三区| 午夜激情视频在线播放| 国产一区精品| 精品久久久久久中文字幕2017| 四虎影视精品永久免费网站| 日本在线www| 欧美另类videosbestsex| 日韩女人做爰大片| 国产不卡在线观看| 国产成人精品影视| 欧美一级视频免费观看| 一级女性全黄生活片免费| 九九久久国产精品| 亚洲女人国产香蕉久久精品| 国产一区二区精品|