成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

07 linux 一個(gè)完整的shell腳本調(diào)試工具

不知名網(wǎng)友 / 2563人閱讀

摘要:常用的日志輸出形式通過(guò)編輯需要調(diào)試的腳本,在腳本很多行使用輸出不同的內(nèi)容來(lái)作為調(diào)試的依據(jù)通常小篇幅的腳本,使用的形式來(lái)調(diào)試,木的問(wèn)題。如此,腳本就編程誰(shuí)調(diào)用,誰(shuí)給日志配置日志等級(jí)和日志輸出路徑。中的方法有待優(yōu)化。


執(zhí)行shell腳本時(shí),常常會(huì)打印一些日志到控制臺(tái),根據(jù)輸出的日志,來(lái)判斷腳本功能正確與否。

常用的日志輸出形式

通過(guò)Vim編輯需要調(diào)試的腳本,在腳本很多行使用echo輸出不同的內(nèi)容來(lái)作為調(diào)試的依據(jù)

[userwin@MiWiFi-R3L-srv temp]$ echo "This is a test log"This is a test log

通常小篇幅的shell 腳本,使用echo的形式來(lái)調(diào)試,木的問(wèn)題。
但是如果shell腳本有上千行,且邏輯復(fù)雜的情況下,這種就很難滿足要求。

使用OOP編程思想設(shè)計(jì)log函數(shù)

[userwin@MiWiFi-R3L-srv temp]$ vim log.sh#!/bin/bashfunction log(){        echo "$@"}
[userwin@MiWiFi-R3L-srv temp]$ vim debug.sh#!/bin/bashsource ./log.shlog "test log funciton"log "today is `date "+%Y-%m-%d"` "
[userwin@MiWiFi-R3L-srv temp]$ sh debug.sh test log funcitontoday is 2021-11-26

讓log方法象log4j一樣 輸出時(shí)前面帶日期和時(shí)間

[userwin@MiWiFi-R3L-srv temp]$ vim log.sh#!/bin/bashfunction log(){        echo "$(date "+%Y-%m-%d %H:%M:%S") $@"}
[userwin@MiWiFi-R3L-srv temp]$ sh debug.sh 2021-11-26 00:04:53 test log funciton2021-11-26 00:04:53 today is 2021-11-26 

為日志輸出添加開(kāi)關(guān)

LOG_OPEN=1 即為L(zhǎng)og日志的開(kāi)關(guān)。

[userwin@MiWiFi-R3L-srv temp]$ cat log.sh #!/bin/bashLOG_OPEN=1function log(){	[ $LOG_OPEN -eq 1 ]  && echo "$(date "+%Y-%m-%d %H:%M:%S") $@"}

劃分日志等級(jí) 并添加顏色

[userwin@MiWiFi-R3L-srv temp]$ vim log.sh #!/bin/bash#日志級(jí)別 debug-1, info-2, warn-3, error-4, always-5LOG_LEVEL=3#調(diào)試日志function log_debug(){  content="[DEBUG] $(date "+%Y-%m-%d %H:%M:%S") $@"  [ $LOG_LEVEL -le 1  ] && echo -e "/033[32m"  ${content}  "/033[0m"}#信息日志function log_info(){  content="[INFO] $(date "+%Y-%m-%d %H:%M:%S") $@"  [ $LOG_LEVEL -le 2  ] && echo -e "/033[32m"  ${content} "/033[0m"}#警告日志function log_warn(){  content="[WARN] $(date "+%Y-%m-%d %H:%M:%S") $@"  [ $LOG_LEVEL -le 3  ] && echo -e "/033[33m" ${content} "/033[0m"}#錯(cuò)誤日志function log_err(){  content="[ERROR] $(date "+%Y-%m-%d %H:%M:%S") $@"  [ $LOG_LEVEL -le 4  ] && echo -e "/033[31m" ${content} "/033[0m"}#一直都會(huì)打印的日志function log_always(){   content="[ALWAYS] $(date "+%Y-%m-%d %H:%M:%S") $@"   [ $LOG_LEVEL -le 5  ] && echo -e  "/033[32m" ${content} "/033[0m"}

調(diào)用

[userwin@MiWiFi-R3L-srv temp]$ vim test.sh #!/bin/bashsource ./log.shlog_debug "this is debug log..."log_info "this is info log..."log_warn "this is warn log..."log_err "this is error log..."log_always "this is always log.."

輸出結(jié)果

[userwin@MiWiFi-R3L-srv temp]$ sh test.sh  [WARN] 2021-11-28 23:05:23 this is warn log...  [ERROR] 2021-11-28 23:05:23 this is error log...  [ALWAYS] 2021-11-28 23:05:23 this is always log.. 

輸出到文件

vim logFile.sh#!/bin/bash#日志級(jí)別 debug-1, info-2, warn-3, error-4, always-5LOG_LEVEL=3#日志文件LOG_FILE=./log.txt#調(diào)試日志function log_debug(){  content="[DEBUG] $(date "+%Y-%m-%d %H:%M:%S") $@"  [ $LOG_LEVEL -le 1  ] && echo $content >> $LOG_FILE && echo -e "/033[32m"  ${content}  "/033[0m"}#信息日志function log_info(){  content="[INFO] $(date "+%Y-%m-%d %H:%M:%S") $@"  [ $LOG_LEVEL -le 2  ] && echo $content >> $LOG_FILE && echo -e "/033[32m"  ${content} "/033[0m"}#警告日志function log_warn(){  content="[WARN] $(date "+%Y-%m-%d %H:%M:%S") $@"  [ $LOG_LEVEL -le 3  ] && echo $content >> $LOG_FILE && echo -e "/033[33m" ${content} "/033[0m"}#錯(cuò)誤日志function log_err(){  content="[ERROR] $(date "+%Y-%m-%d %H:%M:%S") $@"  [ $LOG_LEVEL -le 4  ] && echo $content >> $LOG_FILE && echo -e "/033[31m" ${content} "/033[0m"}#一直都會(huì)打印的日志function log_always(){   content="[ALWAYS] $(date "+%Y-%m-%d %H:%M:%S") $@"   [ $LOG_LEVEL -le 5  ] && echo $content >> $LOG_FILE && echo -e  "/033[32m" ${content} "/033[0m"}

調(diào)用

[userwin@MiWiFi-R3L-srv temp]$ vim test.sh #!/bin/bashsource ./logFile.shlog_debug "this is debug log..."log_info "this is info log..."log_warn "this is warn log..."log_err "this is error log..."log_always "this is always log.."

輸出結(jié)果:

[userwin@MiWiFi-R3L-srv temp]$ cat log.txt [WARN] 2021-11-28 23:09:00 this is warn log...[ERROR] 2021-11-28 23:09:00 this is error log...[ALWAYS] 2021-11-28 23:09:00 this is always log..

為什么輸出沒(méi)有顏色? 見(jiàn)下圖


修改輸出信息如下就有顏色處處了

輸出記過(guò)

總結(jié)

腳本還有待完善,目前有如下幾個(gè)想法
1:創(chuàng)建log.cfg配置文件,放如下配置

#日志級(jí)別 debug-1, info-2, warn-3, error-4, always-5LOG_LEVEL=3#日志文件LOG_FILE=./log.txt

修改 logFile.sh 如果讀取log.cfg 有值,則取其值;無(wú)值,給個(gè)默認(rèn)值。

2:將這兩個(gè)配置寫(xiě)在調(diào)用shell 腳本中,并將這個(gè)量變量導(dǎo)入環(huán)境變量中,如果logFile.sh 沒(méi)有取到系統(tǒng)變量,就給個(gè)默認(rèn)值。
如此,腳本就編程誰(shuí)調(diào)用,誰(shuí)給日志配置日志等級(jí)和日志輸出路徑。

3: logFile.sh 中的方法有待優(yōu)化。
以上三個(gè)想法留著后面補(bǔ)充吧?。?!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/125553.html

相關(guān)文章

  • 新書(shū)《全棧數(shù)據(jù)之門(mén)》完整目錄

    摘要:全棧數(shù)據(jù)之門(mén)前言自強(qiáng)不息,厚德載物,自由之光,你是我的眼基礎(chǔ),從零開(kāi)始之門(mén)文件操作權(quán)限管理軟件安裝實(shí)戰(zhàn)經(jīng)驗(yàn)與,文本處理文本工具的使用家族的使用綜合案例數(shù)據(jù)工程,必備分析文件探索內(nèi)容探索交差并補(bǔ)其他常用的命令批量操作結(jié)語(yǔ)快捷鍵,之門(mén)提高效率光 showImg(https://segmentfault.com/img/bVK0aK?w=350&h=350); 全棧數(shù)據(jù)之門(mén) 前言 自強(qiáng)不息,...

    yibinnn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<