精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

精品久久久噜噜噜噜久久图片| 国产乱码精品一区二区三区不卡| 手机av在线不卡| 亚洲日本网址| 亚洲免费观看高清完整版在线| 51成人做爰www免费看网站| 久久久久亚洲天堂| 九九久久电影| 日韩限制级电影在线观看| jizzjizz国产精品喷水| 成人午夜影视| 成人亚洲精品久久久久软件| 日本免费一区二区三区视频观看| 911国产在线| 久久动漫网址| 欧美久久久久久久久| 日本阿v视频在线观看| 福利在线午夜| 成年人国产精品| 国产中文字幕日韩| 狠狠人妻久久久久久| 天天影视综合| 日韩理论片久久| 亚洲欧美一区二区三区不卡| 欧美一区 二区 三区| 亚洲精品久久嫩草网站秘色| 日韩欧美精品一区二区三区经典| 亚洲老妇色熟女老太| 免费av成人在线| 5252色成人免费视频| 亚洲国产精品免费在线观看| 精品av一区二区| 亚洲第一黄色网| 91热视频在线观看| 78精品国产综合久久香蕉| 亚欧色一区w666天堂| 400部精品国偷自产在线观看| 国产一区二区影视| 99久久伊人精品| 91gao视频| ,一级淫片a看免费| 日韩精品亚洲专区| 热草久综合在线| 国产午夜精品无码一区二区| 欧美在线国产| 久久久91精品国产| 美女av免费看| 神马久久一区二区三区| 日韩精品小视频| 国产一卡二卡三卡四卡| 视频亚洲一区二区| 日韩欧美一区电影| 91亚洲一区二区| 亚洲精品三区| 欧美年轻男男videosbes| 黄色片在线免费| 欧美又大粗又爽又黄大片视频| 最新91在线视频| 国产精品无码一区二区三区| 凹凸成人在线| 欧美成人一区二区三区| 日本成人xxx| 国产精品一区二区三区av| 欧美精品乱人伦久久久久久| 最新免费av网址| 色综合一区二区日本韩国亚洲 | 欧美资源一区| 免费毛片在线| 国产欧美日产一区| 亚洲一区二区三区精品视频| 免费看美女视频在线网站| 国产精品久久久久aaaa樱花| 亚洲亚洲精品三区日韩精品在线视频| a√资源在线| 成人免费在线视频观看| 久久久久久久免费视频| 123区在线| 欧美色道久久88综合亚洲精品| 久久久999视频| 欧美www.| 欧美一区二区三区视频免费播放 | 外国成人毛片| 日韩视频在线永久播放| 精品熟女一区二区三区| 亚洲图片久久| 最新中文字幕亚洲| 麻豆视频在线免费看| 亚洲福利精品| 国产精品夫妻激情| 国产成人精品一区二区无码呦| 国产成人在线观看| 美女被啪啪一区二区| 高清国产福利在线观看| 一区二区三区不卡在线观看| 男人和女人啪啪网站| 电影一区电影二区| 日韩午夜小视频| 精品少妇人妻一区二区黑料社区| 久久国产电影| 国内精品久久久久久中文字幕| www.国产毛片| 国产在线看一区| 激情伦成人综合小说| www.91在线| 亚洲一区二区精品久久av| 999香蕉视频| 日本伊人久久| 亚洲午夜久久久久久久| 青青草原在线免费观看| 老司机午夜精品视频在线观看| 91精品久久久久久久久不口人| 手机看片国产1024| **性色生活片久久毛片| 131美女爱做视频| 成人豆花视频| 亚洲欧美一区二区三区在线| 波多野结衣不卡视频| 青青草成人在线观看| 俄罗斯精品一区二区三区| 午夜伦全在线观看| 欧美性猛交xxxx| 9191在线视频| 欧美好骚综合网| 青草青草久热精品视频在线网站| 国产福利视频导航| 中文字幕av资源一区| 黄色免费观看视频网站 | 国产精品日韩一区二区免费视频| 91吃瓜网在线观看| 欧美性xxxxx极品娇小| 好吊操视频这里只有精品| 日韩一区自拍| 国产精品91在线| 欧美日韩影视| 精品女厕一区二区三区| 国产精品果冻传媒| 在线中文字幕第一区| 成人黄色av网| av电影在线观看| 色综合久久88色综合天天6| 国产精品一区二区在线免费观看| 欧美成人69av| 国产精品自产拍高潮在线观看| 欧美日韩影视| 欧美日韩一二三四五区| 国产草草浮力影院| 激情综合在线| 精品免费视频123区| 3344国产永久在线观看视频| 亚洲精品在线免费观看视频| 成人观看免费视频| 国产精品123区| 伊人久久在线观看| www.豆豆成人网.com| 欧美国产日产韩国视频| 性中国xxx极品hd| 亚洲黄一区二区三区| 中文字幕av一区二区三区人妻少妇 | 欧洲人成人精品| 久久丫精品忘忧草西安产品| 视频一区在线视频| 日本成人黄色免费看| 色8久久影院午夜场| 在线看日韩欧美| 一本到在线视频| 自拍av一区二区三区| 亚欧精品在线视频| 激情91久久| 精品免费国产| 肉色欧美久久久久久久免费看| 亚洲色图美腿丝袜| 岳乳丰满一区二区三区| 亚洲欧美日韩国产手机在线| 亚洲综合123| 亚洲视频高清| 欧美日韩精品免费在线观看视频| 日韩一区二区三区在线免费观看| 最近中文字幕日韩精品 | 精品一区二区三区影院在线午夜 | 亚洲中文字幕一区| 蜜桃av一区| 亚洲图片在线观看| 日本免费一区二区三区视频| 97在线精品视频| 国产高清一级毛片在线不卡| 欧美男同性恋视频网站| 国产一级做a爰片在线看免费| 91麻豆免费在线观看| 欧美婷婷精品激情| 欧美96在线丨欧| 蜜桃免费一区二区三区| 欧美久久久网站| 久久久久久成人精品| 久久久久久久久亚洲精品| 欧美日韩亚洲综合| 国产在线观看成人| 中文文精品字幕一区二区| 日韩高清一二三区| 视频一区二区欧美| www污在线观看| 欧美特黄一级大片| 高清不卡一区二区三区| 欧美一级二级视频| 久久久久久久一| 国产成人天天5g影院在线观看| 欧美军同video69gay| 国产一区二区三区影院| 国产精品久久久久久久久果冻传媒 | 欧美人xxxxx| 玖玖玖视频精品| 日韩暖暖在线视频| 色av手机在线| 中文字幕久热精品在线视频 | 成人免费黄色| 久久久久一本一区二区青青蜜月 | 中文字幕一区二区三区四区久久| 日韩美女视频免费在线观看| 青青草原av在线| 最新的欧美黄色| 免费国产在线视频| 日韩免费成人网| 国产精品美女一区| 91国产视频在线观看| 日本一区二区三区四区五区| 日韩理论片中文av| 99精品欧美一区二区| 97精品视频在线观看自产线路二| 国产高清999| 麻豆成人91精品二区三区| 国产精品少妇在线视频| 一本综合精品| 拔插拔插海外华人免费| 欧美精品麻豆| 男同互操gay射视频在线看| av中文一区| 欧美一区二视频在线免费观看| 黄色网一区二区| 成人av免费电影| 天堂精品在线视频| 91中文字幕一区| 国产高清亚洲| 91在线视频免费| 四虎国产精品免费久久| 国产伦精品一区二区三区精品视频| 美女100%一区| 日韩美女免费视频| 网友自拍亚洲| 国产经典一区二区| 香蕉成人影院| 成人黄色av播放免费| 高清国产一区二区三区四区五区| 国产精品无码专区在线观看| 日韩精品影片| 国产精品一区二区久久国产| 精品亚洲a∨| 91久久精品在线| 激情不卡一区二区三区视频在线| 91久久国产婷婷一区二区| 91精品福利观看| 999精品视频一区二区三区| 日韩欧美高清一区二区三区| 国产99在线播放| 国产欧美自拍一区| 久久亚洲精品欧美| 精品久久久久中文字幕小说| 亚洲午夜久久久影院伊人| 91精品国产福利在线观看麻豆| 超碰成人在线免费观看| 欧美hd在线| 一二三四中文字幕| 宅男噜噜噜66国产日韩在线观看| 又粗又黑又大的吊av| 久久综合狠狠| 做a视频在线观看| 盗摄精品av一区二区三区| 在线免费观看a级片| 国产视频一区不卡| 午夜爽爽爽男女免费观看| 亚洲综合男人的天堂| 日韩av大片在线观看| 欧洲av一区二区嗯嗯嗯啊| 国产精品国产av| 亚洲福利视频久久| 国产视频网站在线| 欧美xxxx综合视频| 免费h在线看| 国产狼人综合免费视频| 亚洲一区网址| 日本中文不卡| 欧美日韩精品免费观看视频完整| 久久视频这里有精品| 蜜桃视频在线观看一区| 伦伦影院午夜理论片| 久久久久久一级片| 国语对白在线播放| 疯狂做受xxxx欧美肥白少妇| 中文字幕欧美色图| 亚洲丁香久久久| 日韩理伦片在线| 91av在线免费观看| 性欧美video另类hd尤物| 国产伦精品一区二区三区四区免费| 国内精品伊人久久久| 99久久免费观看| 美女在线一区二区| 国产精品1000部啪视频| 亚洲欧美另类小说视频| 国产suv精品一区二区33| 欧美成人欧美edvon| 在线播放麻豆| 欧美中文在线视频| 综合激情五月婷婷| 一本一道久久a久久精品综合 | 欧美激情免费观看| 国产精品高潮久久| 久久久神马电影| 激情视频一区二区三区| 午夜xxxxx| 国产欧美日韩综合| 六月丁香在线视频| 欧美刺激午夜性久久久久久久| 亚洲xxxxxx| 日韩av不卡在线| 欧美xxxx在线| 男人天堂新网址| 国模少妇一区二区三区| 永久免费毛片在线观看| 欧美日韩国内自拍| 亚洲va欧美va| 欧美精品在线免费播放| 欧美v亚洲v综合v国产v仙踪林| 欧美婷婷久久| 香蕉av777xxx色综合一区| 美女久久久久久久久| 亚洲男人的天堂在线观看| 亚洲天堂aaa| 自拍偷拍免费精品| 色8久久影院午夜场| 日本不卡二区| 日韩中文字幕一区二区三区| 国产又爽又黄无码无遮挡在线观看| 亚洲五月六月丁香激情| www.亚洲欧美| 欧美黑人一区二区三区| 亚洲不卡在线| 最新av网址在线观看| 国产在线视频精品一区| 午夜国产福利一区二区| 欧美一区二区三区成人| 在线观看午夜av| 亚洲japanese制服美女| 真实国产乱子伦精品一区二区三区| 国产精品久久久久久9999| 亚洲色图制服诱惑| www香蕉视频| 欧美精品久久久久久久久久| 北条麻妃在线一区二区免费播放| 成人黄色大片网站| av一本久道久久综合久久鬼色| 亚洲精品视频在线观看免费视频| 亚洲精品电影在线| 高清av不卡| 午夜一区二区三视频在线观看| 美女久久久精品| 国产精品免费人成网站酒店| 日韩视频免费直播| 国产乱码精品一区二三赶尸艳谈| 国产欧美一区二区三区不卡高清| 99国产精品视频免费观看一公开| av网站免费在线播放| 色999日韩国产欧美一区二区| 2017亚洲天堂1024| 亚洲综合av影视| 国产欧美日韩亚洲一区二区三区| 白丝女仆被免费网站| 色婷婷一区二区三区四区| 午夜伦全在线观看| 成人情视频高清免费观看电影| 99视频一区| 免费一级黄色录像| 欧美一级生活片| av资源网在线播放| 日韩在线三区| 国产成人精品亚洲午夜麻豆| 天堂网一区二区三区| 最近更新的2019中文字幕| 久久精品免视看国产成人| 自慰无码一区二区三区| 欧美国产丝袜视频| 亚洲美女综合网| 国产999精品视频| 欧美精品一线| 成人在线一级片| 日韩欧美高清一区| 欧美性猛交xxx高清大费中文| 午夜久久久久久久久久久| 99麻豆久久久国产精品免费优播| 亚洲天堂中文网| 91成人在线播放| 亚洲精品成人影院|