精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

挺好用!Shell腳本日志技巧

開發 后端
本文介紹了shell腳本中日志打印的一些技巧, 這些技巧都是從實踐中總結出來的,文中提供了腳本的全部代碼,可以拿來直接使用,也可根據實際的需求自行調整。

[[414645]]

本文轉載自微信公眾號「Linux開發那些事兒」,作者LinuxThings。轉載本文請聯系Linux開發那些事兒公眾號。

執行shell腳本時,常常會打印一些日志到控制臺,根據輸出的日志,來判斷腳本功能正確與否

但是,太多日志打印的話,會讓閱讀變得很困難,從日志信息里面找到我們關心的那部分也變得很不方便了

所以,有一個好用的shell腳本日志接口是非常有必要的,本文將聊聊實踐中日志打印的一些技巧

常見日志打印方式

編寫 shell 腳本時,最簡單的日志打印是使用 echo 輸出,比如: 下面是打印一個測試程序的日志

  1. [root@VM-0-2-centos ~]# echo "this is a log test..." 
  2. this is a log test... 

上面的方式使用起來非常簡單,編寫效率也很高,對于一些功能簡單,代碼量少的shell腳本,非常適合這種日志打印的方式,簡單快捷

通用接口

上面的小節中,每次都用 echo ,沒有一個統一的輸出格式,如果需要在每條日志開頭加上指定內容, 就需要修改腳本中每一處的日志,這就變成了一個體力活了

針對這點,可以定義一個輸出函數,所有的的輸出統一調用這個函數, 現有測試腳本 t.sh 內容如下

  1. #!/bin/bash 
  2.  
  3. function log() 
  4.    echo "$@" 

另外新建一個測試腳本 ta.sh

  1. #!/bin/bash 
  2.  
  3. source ./t.sh 
  4.  
  5. log "this is a test..." 
  6. log "today is `date '+%Y-%m-%d'` " 

執行 ./ta.h 命令,結果如下

  1. [root@VM-0-2-centos shell_log]# ./ta.sh  
  2. this is a test... 
  3. today is 2021-07-27 

如果現在想在每一行日志前面加上當前時間的話,直接修改 t.sh 中的 log 函數, t.sh調整后的腳本如下

  1. #!/bin/bash 
  2.  
  3. function log() 
  4.    echo "$(date '+%Y-%m-%d %H:%M:%S') $@" 

然后再次執行 ./ta.sh 命令,結果如下

  1. [root@VM-0-2-centos shell_log]# ./ta.sh  
  2. 2021-07-27 19:55:54 this is a test... 
  3. 2021-07-27 19:55:54 today is 2021-07-27 

上面只修改了 log 函數,ta.sh 中的每一行日志開頭就都輸出了當前的時間, $@ 表示傳入log 函數的所有參數

打印開關

調試腳本的時候,會加上很多的日志打印,當調試完了之后,需要關閉所有的日志輸出,上面已經把日志打印統一到一個函數中了,這時我們只需要禁止執行 log 函數的 echo 語句即可,修改之后的 t.sh 內容如下

  1. #!/bin/bash 
  2.  
  3. function log() 
  4.      [ 0 -gt 1 ]  && echo "$(date '+%Y-%m-%d %H:%M:%S') $@" 

當 [ 0 -gt 1 ] 表示條件結果為 false 的時候,echo 語句就不會執行,這樣就能關閉所有的日志打印

也可以在 t.sh 中加一個變量,表示是否開啟日志,當開啟的時候,才會有日志打印,開關關閉時,同時會關閉日志打印功能,調整后的 t.sh 內容如下

  1. #!/bin/bash 
  2.  
  3. LOG_OPEN=0 
  4.  
  5. function log() 
  6.      [ $LOG_OPEN -eq 1 ]  && echo "$(date '+%Y-%m-%d %H:%M:%S') $@" 

需要開啟日志的時候,把 LOG_OPEN 設置為1,關閉日志打印,設置為0即可

日志等級

在不同的腳本邏輯中,打印的日志應該有不同的作用,有些是臨時變量值的輸出,作為調試用的,有些是一些狀態轉換或者達到不同階段的提示信息,還有些是嚴重的錯誤,需要重點輸出并提醒用戶

以上這些可以通過日志等級來實現,把日志劃分等級,不同的等級屏幕上輸出不同的顏色,便于查看,直接來看修改后的 t.sh 腳本內容吧

  1. #!/bin/bash 
  2.  
  3. #日志級別 debug-1, info-2, warn-3, error-4, always-5 
  4. LOG_LEVEL=3 
  5.  
  6. #調試日志 
  7. function log_debug(){ 
  8.   content="[DEBUG] $(date '+%Y-%m-%d %H:%M:%S') $@" 
  9.   [ $LOG_LEVEL -le 1  ] && echo -e "\033[32m"  ${content}  "\033[0m" 
  10. #信息日志 
  11. function log_info(){ 
  12.   content="[INFO] $(date '+%Y-%m-%d %H:%M:%S') $@" 
  13.   [ $LOG_LEVEL -le 2  ] && echo -e "\033[32m"  ${content} "\033[0m" 
  14. #警告日志 
  15. function log_warn(){ 
  16.   content="[WARN] $(date '+%Y-%m-%d %H:%M:%S') $@" 
  17.   [ $LOG_LEVEL -le 3  ] && echo -e "\033[33m" ${content} "\033[0m" 
  18. #錯誤日志 
  19. function log_err(){ 
  20.   content="[ERROR] $(date '+%Y-%m-%d %H:%M:%S') $@" 
  21.   [ $LOG_LEVEL -le 4  ] && echo -e "\033[31m" ${content} "\033[0m" 
  22. #一直都會打印的日志 
  23. function log_always(){ 
  24.    content="[ALWAYS] $(date '+%Y-%m-%d %H:%M:%S') $@" 
  25.    [ $LOG_LEVEL -le 5  ] && echo -e  "\033[32m" ${content} "\033[0m" 

把日志級別分成 5 個等級,分別是 : debug日志、info日志、警告日志、錯誤日志、一直都打印的日志 ,每個級別對應一個函數接口,而且每個級別可以定義不同的字符顏色,方便在屏幕上查看錯誤以及警告,上述腳本中錯誤日志是紅色,警告日志是黃色,其他級別的日志是綠色

修改 ta.sh 腳本, 內容如下

  1. #!/bin/bash 
  2.  
  3. source ./t.sh 
  4.  
  5. log_debug "this is debug log..." 
  6. log_info "this is info log..." 
  7. log_warn "this is warn log..." 
  8. log_err "this is error log..." 
  9. log_always "this is always log.." 

把 t.sh 中 LOG_LEVEL 設置為 1 , 執行 ./ta.sh 命令,結果如下

再次調整 t.sh 中 LOG_LEVEL 為 3 , 執行 ./ta.sh 命令,結果如下

從上面兩次結果可以知道,日志級別設置為 debug級別 ( LOG_LEVEL = 1 ) 時,所有的等級的日志都會輸出,當把日志級別設置為 info級別 ( LOG_LEVEL = 3 ) 后,只輸出 warn日志、error日志 以及 always日志

如果想關閉所有級別的日志,把日志級別調到比 always日志 更高的級別,也即 LOG_LEVEL 的值大于 5 就行了

寫入文件

當腳本是定時調用的時候,有時需要查詢一段時間內腳本運行情況,這種情況下腳本一般都是后臺運行的,要查詢一段時間的日志,就需要把日志寫入到日志文件中

比如:定時備份數據庫的shell腳本,就需要記錄下每次備份時的情況,便于后期查詢用

調整下 t.sh 腳本,增加日志寫入文件語句,修改后的腳本內容如下

  1. #!/bin/bash 
  2.  
  3. #日志級別 debug-1, info-2, warn-3, error-4, always-5 
  4. LOG_LEVEL=3 
  5.  
  6. #日志文件 
  7. LOG_FILE=./log.txt 
  8.  
  9. #調試日志 
  10. function log_debug(){ 
  11.   content="[DEBUG] $(date '+%Y-%m-%d %H:%M:%S') $@" 
  12.   [ $LOG_LEVEL -le 1  ] && echo $content >> $LOG_FILE && echo -e "\033[32m"  ${content}  "\033[0m" 
  13. #信息日志 
  14. function log_info(){ 
  15.   content="[INFO] $(date '+%Y-%m-%d %H:%M:%S') $@" 
  16.   [ $LOG_LEVEL -le 2  ] && echo $content >> $LOG_FILE && echo -e "\033[32m"  ${content} "\033[0m" 
  17. #警告日志 
  18. function log_warn(){ 
  19.   content="[WARN] $(date '+%Y-%m-%d %H:%M:%S') $@" 
  20.   [ $LOG_LEVEL -le 3  ] && echo $content >> $LOG_FILE && echo -e "\033[33m" ${content} "\033[0m" 
  21. #錯誤日志 
  22. function log_err(){ 
  23.   content="[ERROR] $(date '+%Y-%m-%d %H:%M:%S') $@" 
  24.   [ $LOG_LEVEL -le 4  ] && echo $content >> $LOG_FILE && echo -e "\033[31m" ${content} "\033[0m" 
  25. #一直都會打印的日志 
  26. function log_always(){ 
  27.    content="[ALWAYS] $(date '+%Y-%m-%d %H:%M:%S') $@" 
  28.    [ $LOG_LEVEL -le 5  ] && echo $content >> $LOG_FILE && echo -e  "\033[32m" ${content} "\033[0m" 

實際上是在每個日志級別的接口中增加了 echo $content >> $LOG_FILE 語句,表示將日志寫入文件中, $LOG_FILE 表示日志文件

目前日志級別是 warn日志 級別,執行 ./ta.sh 命令,結果如下

從上述結果可以看出,執行 ./ta.sh 命令之后,除了屏幕會輸出日志外,本地目錄下也會生成一個 log.txt 文件,文件內容和屏幕上的日志是一樣的

小結 

本文介紹了shell腳本中日志打印的一些技巧, 這些技巧都是從實踐中總結出來的,文中提供了腳本的全部代碼,可以拿來直接使用,也可根據實際的需求自行調整

 

責任編輯:武曉燕 來源: Linux開發那些事兒
相關推薦

2024-08-27 09:32:04

2025-02-10 07:00:00

JavaScript數組方法前端

2015-03-11 10:30:52

Apple Pay

2023-09-01 14:32:27

語言大語言模型

2021-03-21 23:08:46

安卓手機工具

2013-06-03 11:28:05

shell命令

2024-08-06 09:40:21

2019-08-14 08:03:49

LinuxShell腳本web服務

2021-06-17 06:19:20

存儲SQL數據庫

2025-09-18 08:16:28

JavaScrip單線程Linux

2020-04-01 15:11:36

Shell命令Linux

2024-11-27 09:19:25

2009-12-31 17:16:42

2019-08-09 13:50:08

shellLinux

2011-05-04 17:41:20

原裝耗材優點

2022-01-11 19:29:15

CSS JS頁面

2021-12-08 09:43:46

細節Google問卷工具

2025-05-08 09:05:00

Shell腳本磁盤日志

2025-11-20 02:25:00

Vs CodeClaudeCursor

2011-12-31 09:49:30

MavenJava
點贊
收藏

51CTO技術棧公眾號

午夜伦理精品一区| 日韩精品一区二区在线观看| 视频一区国产精品| 国产欧美熟妇另类久久久 | 国产一区二区电影| 欧美激情在线一区| 阿v天堂2014| 136福利精品导航| 色av一区二区| 成人午夜免费在线视频| 国产精品一区二区婷婷| 国产成人一区二区精品非洲| 国产成人精品网站| 国产成人精品av久久| 日本久久综合| 日韩第一页在线| 国产大片一区二区三区| 欧美色网一区| 亚洲成在线观看| 一区二区三区视频| 激情福利在线| 99久久精品久久久久久清纯| 成人xxxxx| 国产一区二区视频免费| 亚洲黑丝一区二区| 久久综合88中文色鬼| 第一次破处视频| 巨人精品**| 欧美大片一区二区三区| 亚洲国产成人va在线观看麻豆| 涩涩视频在线播放| 五月综合激情日本mⅴ| 日本一本草久p| 免费a级在线播放| 欧美国产一区二区在线观看| 久久人人97超碰人人澡爱香蕉| 亚洲第一成人av| 国产原创一区二区三区| 国产欧美日韩中文| 一区二区视频播放| 日韩激情一区二区| 亚州国产精品久久久| 免看一级a毛片一片成人不卡| 日韩精品免费一区二区三区| 国产午夜精品一区理论片飘花| 国产又粗又长又爽| 国产精品成人自拍| 精品国产3级a| 久久久久久久无码| 欧美人妖在线观看| 亚洲精品美女久久久久| 91丨porny丨对白| 成人自拍在线| 337p日本欧洲亚洲大胆精品 | 一级欧美视频| 欧美日本在线播放| 涩涩网站在线看| 91成人小视频| 91精品国产欧美日韩| 99精品999| 韩国三级大全久久网站| 91精品国产综合久久久久久| 国产成年人视频网站| 国产成人视屏| 日韩欧美国产系列| 亚洲av成人片无码| 欧美三级午夜理伦三级在线观看| 亚洲国产精品va在看黑人| 2一3sex性hd| 制服丝袜日韩| 中文字幕久热精品在线视频| 91久久久久久久久久久久久久| 亚洲国产精品成人| 国模精品视频一区二区三区| 国产精品一区无码| 美国av一区二区| 亚洲aaa激情| 日本美女一级片| 久久精品欧美日韩精品| 亚洲欧美国产不卡| 日韩影视在线| 日韩欧美aaa| 一级黄色录像在线观看| 亚洲日本va| 国产视频精品免费播放| 免费观看特级毛片| 欧美午夜视频| 国产99在线|中文| 国产乱码久久久| 99麻豆久久久国产精品免费优播| 欧美影视一区二区| av网站大全在线| 欧美日韩国产一区二区三区| 国产小视频精品| 91精品丝袜国产高跟在线| 亚洲美女性生活视频| frxxee中国xxx麻豆hd| 亚洲美女啪啪| 成人午夜在线影院| 色吊丝在线永久观看最新版本| 中文字幕亚洲在| 欧美二区在线视频| 四虎成人精品一区二区免费网站| 亚洲第一页中文字幕| 九九九视频在线观看| 在线观看日韩av电影| 国产精品国产三级国产aⅴ浪潮| 国产肥老妇视频| 国产欧美一区二区在线观看| 天堂а√在线中文在线| 日本h片久久| 亚洲精品福利在线观看| 黄色精品视频在线观看| 裸体素人女欧美日韩| 痴汉一区二区三区| 黄色免费在线看| 欧美在线播放高清精品| 免费的av网站| 黄色综合网站| 成人在线一区二区| youjizz在线播放| 欧美丝袜一区二区三区| 人妻换人妻a片爽麻豆| 忘忧草精品久久久久久久高清| 人九九综合九九宗合| 高清国产mv在线观看| 亚洲精品日韩综合观看成人91| 亚洲色图 在线视频| 久草在线成人| 欧美亚洲国产日本| 国内爆初菊对白视频| 一区二区三区高清不卡| 亚洲天堂av一区二区三区| 欧美伦理在线视频| 国产成人精品视频在线观看| 欧美成人综合在线| 欧美日韩一区二区免费视频| 黄色性视频网站| 精品av久久久久电影| 99视频免费观看| 香蕉久久aⅴ一区二区三区| 欧美高清视频一二三区| 999精品久久久| 开心九九激情九九欧美日韩精美视频电影| 欧美精品123| 成人自拍av| 一级做a爰片久久毛片美女图片| 中文在线第一页| 久久久久久久久久看片| 91看片就是不一样| 欧美久久综合网| 国产日本欧美在线观看| 日本在线观看| 欧美一区二区三区公司| 一区二区成人免费视频| 成人一区二区在线观看| 久久久久久www| 日韩av午夜| 国产激情综合五月久久| 日本在线观看视频| 日韩视频一区二区三区在线播放| 激情五月婷婷在线| 成人中文字幕合集| 亚洲欧洲日产国码无码久久99| 国产日产精品_国产精品毛片| 日韩女在线观看| 午夜激情在线观看| 日韩欧美国产电影| 视频一区二区三区四区五区| 久久久99免费| 天天看片天天操| 激情久久一区| 日本精品一区二区三区视频 | 日韩午夜黄色| 免费国产一区| 91麻豆精品| 久久久亚洲成人| 黄色av免费在线看| 91精品在线免费观看| 日韩xxx高潮hd| 久久精品欧美一区二区三区麻豆| 8x8x成人免费视频| 亚洲香蕉网站| 日本成人三级| 日韩精品一区二区三区中文字幕| 97视频在线观看免费| 91福利在线视频| 亚洲福利视频专区| 最新在线中文字幕| 亚洲午夜在线视频| 中文字幕免费在线看线人动作大片 | 久久中文字幕在线| 五月激情婷婷综合| 欧美日韩激情在线| 日韩精品人妻中文字幕| 国产精品国产精品国产专区不片| 亚洲美女在线播放| 九九国产精品视频| 99热成人精品热久久66| 一区二区三区午夜视频| 久久av一区二区三区漫画| 日韩欧美专区| 青青a在线精品免费观看| 成人在线观看免费网站| 亚洲欧美日韩中文视频| www.污视频| 欧美日韩视频在线第一区| 日韩网红少妇无码视频香港| 2019中文字幕在线观看| 天天综合天天做| 91热门视频在线观看| 亚洲精品永久视频| 老司机午夜精品视频| 欧美这里只有精品| 国产精品久久久久久麻豆一区软件| 国内精品一区二区| 国产精品视频首页| 国产精品女人久久久久久| av电影免费在线看| 美女av一区二区三区| 成人高清免费在线播放| 日韩高清av一区二区三区| 国产视频第一页| 欧美日韩一级二级三级| 久久久久在线视频| 午夜精品久久久久久久99水蜜桃| 粉嫩av性色av蜜臀av网站| 国产肉丝袜一区二区| 国产乱了高清露脸对白| 国产成a人亚洲精品| 九九热免费在线观看| 日韩中文字幕区一区有砖一区 | 国产日韩欧美在线观看视频| 国产欧美日韩在线视频| 91精品人妻一区二区| av不卡免费在线观看| 麻豆tv在线观看| 国产精品1区2区3区| 欧美性受xxxxxx黑人xyx性爽| 免费成人av资源网| 爱情岛论坛亚洲首页入口章节| 久久亚洲一区| 免费观看成人网| 日本美女一区二区三区视频| 亚洲 中文字幕 日韩 无码| 久久只有精品| 国产高潮免费视频| 久久99热这里只有精品| 欧美美女性视频| 九九久久精品视频| 夜夜爽久久精品91| 国产成人精品www牛牛影视| 国产在线a视频| 成人做爰69片免费看网站| 97中文字幕在线观看| 成人高清视频免费观看| 国产中文字幕一区二区| 久久女同精品一区二区| 东方伊人免费在线观看| 国产精品嫩草99a| 日本黄色免费片| 一区二区欧美在线观看| 日韩精品视频播放| 日本乱码高清不卡字幕| 在线观看一二三区| 欧美一级夜夜爽| 人人妻人人澡人人爽久久av| 亚洲精品一区二区三区四区高清| 天堂在线中文| 日韩在线小视频| 午夜成年人在线免费视频| 97久久精品国产| 日本精品在线一区| 亚洲尤物视频网| 无码少妇一区二区三区| 亚洲美女网站18| 国模吧视频一区| 日本精品一区二区三区四区| 免费的国产精品| 一二三区视频在线观看| 久久久无码精品亚洲日韩按摩| jizzjizzjizz国产| 亚洲观看高清完整版在线观看 | 亚洲在线免费| 91亚洲免费视频| 波多野洁衣一区| 丁香激情五月少妇| 亚洲国产欧美在线| 中文 欧美 日韩| 亚洲精品一区二区在线观看| 98在线视频| 韩国日本不卡在线| 欧洲亚洲精品| 久久手机视频| 欧美一区亚洲| 国产理论在线播放| 成人v精品蜜桃久久一区| 一二三四国产精品| 亚洲高清在线精品| 91在线视频国产| 亚洲精品综合精品自拍| 欧美黑人猛交的在线视频| 国产成人极品视频| 成人资源在线播放| 免费久久久久久| 强制捆绑调教一区二区| 污污内射在线观看一区二区少妇| 亚洲欧洲一区二区在线播放| www.com国产| 欧美精品一区男女天堂| av超碰免费在线| 国产精品自产拍在线观| 婷婷成人在线| 久艹在线免费观看| 国产精品资源网站| 午夜成人亚洲理伦片在线观看| 日韩欧美精品网站| 欧美熟妇另类久久久久久不卡 | 国产精品一区二区男女羞羞无遮挡 | 国产精品视频麻豆| 亚洲第一网站在线观看| 亚洲高清av在线| 污影院在线观看| 亚洲精品日韩激情在线电影| 成人黄色小视频| 99免费视频观看| 2023国产精品视频| 日韩xxxxxxxxx| 亚洲第一色中文字幕| 牛牛精品视频在线| 96pao国产成视频永久免费| 成人看的视频| 免费看黄色一级大片| 国产调教视频一区| 久久影视中文字幕| 夜夜躁日日躁狠狠久久88av| 全亚洲第一av番号网站| 免费一区二区三区| 噜噜噜久久亚洲精品国产品小说| 你懂的在线观看网站| 五月婷婷久久综合| 天天综合网在线观看| 97在线视频精品| 美女扒开腿让男人桶爽久久动漫| 国产免费黄色小视频| 99r国产精品| 日本熟女毛茸茸| 亚洲欧美国产一区二区三区| 日日av拍夜夜添久久免费| 日韩不卡av| 蜜乳av一区二区三区| 天堂а√在线中文在线鲁大师| 欧美精品tushy高清| 成人三级网址| 国产精品swag| 99精品国产一区二区青青牛奶| 极品白嫩丰满美女无套| 一本一道波多野结衣一区二区| 国产黄色在线| 成人激情视频网| 国产一区亚洲| 免费观看一级一片| 欧美在线看片a免费观看| 9191在线| 99久久一区三区四区免费| 亚洲美女少妇无套啪啪呻吟| 少妇真人直播免费视频| 欧美视频日韩视频| 制服丝袜在线播放| 国产欧美一区二区在线播放| 国产精品美女久久久浪潮软件| 精品国产成人亚洲午夜福利| 欧美日本一区二区三区| 肉肉视频在线观看| 麻豆亚洲一区| 久久国产综合精品| 国产无遮挡裸体免费视频| 国产丝袜高跟一区| 成人豆花视频| 男人添女人下面高潮视频| 欧美国产欧美综合| 午夜精品久久久久久久99热黄桃 | 中文字幕视频在线免费欧美日韩综合在线看 | 国产精品无码永久免费不卡| 91久久精品一区二区三区| 成人直播在线| 欧美性大战久久久久| 国产精品自拍毛片| 精品人妻一区二区三区潮喷在线| 精品国内自产拍在线观看| 秋霞综合在线视频| 久久久九九九热| 欧美性xxxxxxxxx| 久草资源在线| 欧美国产一区二区在线| 国产一区二区三区四区五区入口 | 日韩精品五月天| 欧美成人精品一区二区免费看片| 亚洲香蕉成人av网站在线观看 | 色偷偷色偷偷色偷偷在线视频|