Linux - 查看 Log 的指令 tail、multitail、less

古古

2018/07/25


  • tail -f catalina.log : 實時看log,會自動把新增的log直接顯示出來

    • 在實時日誌上打印顏色,給每個狀態給上不同的顏色,INFO 綠色、WARN 黃色、ERROR 紅色

      tail -f catalina.out | perl -pe 's/(INFO)/\e[0;32m$1\e[0m/g,s/(WARN)/\e[0;33m$1\e[0m/g,s/(ERROR)/\e[1;31m$1\e[0m/g'
      
    • 只看 ERROR

      tail -f catalina.out | grep "ERROR" --line-buffered | perl -pe 's/(ERROR)/\e[1;31m$1\e[0m/g'
      
    • .bashrc 下加入這一段,可以讓 tail 輸出 log 時有顏色

      alias tail="_tail_log"
      _tail_log() {
        "tail" $@ | perl -pe 's/(INFO)/\e[0;32m$1\e[0m/g,s/(WARN)/\e[0;33m$1\e[0m/g,s/(ERROR)/\e[1;31m$1\e[0m/g'
      }
      
  • less : 通常用來翻找舊的日誌

    • 輸入 F,也可以實時滾動日誌,就像 tail -f 的效果一樣

    • .bashrc 下加入這一段,可以讓 less 在找 log 時輸出顏色

      • highlight 整條 log

        alias less="_show_log"
        _show_log() {
        awk '
        /ERROR/ {printf("\033[1;31m%s\033[0m\n", $0)}
        /WARN/ {printf("\033[1;33m%s\033[0m\n", $0)}
        !/(WARN|ERROR)/ {printf("%s\n", $0)}
        ' $1 | "less" -r
        }
        
    • 只highlight INFO、WARN、ERROR 這種狀態

      alias less="_show_log"
      _show_log() {
      awk '
      /ERROR/ {sub(/ERROR/, "\033[1;31mERROR\033[0m")}
      /WARN/ {sub(/WARN/, "\033[1;33mWARN\033[0m")}
      /INFO/ {sub(/INFO/, "\033[0;32mINFO\033[0m")}
      {print}
      ' $1 | "less" -r
      }
      
  • multitail : 可同時開啟多視窗看 log,適合用在看部署在很多機器上的項目的 log

    • -cS [color_scheme] : 可以選擇輸出的 log 的顏色,推薦使用 goldengate,也可自定義(修改/etc/multitail.conf)

    • -s [column number] : 設定看 log 時會分成幾個縱列

      multitail -s 2 -cS goldengate -l 'ssh [ip] "tail -100f /example/logs/catalina.out"' -cS goldengate -l 'ssh [ip] "tail -100f /example/logs/catalina.out"'
      
    • multitail 開始運作後,點擊 b,可以選擇要 scroll 的檔案,點擊 q 退出