1. 程式人生 > >Linux - 檢視日誌的指令 tail、multitail、less

Linux - 檢視日誌的指令 tail、multitail、less

  • 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'
  • multitail : 可同時開啟多視窗看log,適合用在看部署在很多機器上的專案的log

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

      multitail -cS goldengate -l 'ssh [ip] "tail -100f /example/logs/catalina.out"' -cS goldengate -l 'ssh [ip] "tail -100f /example/logs/catalina.out"'
  • less : 通常用來翻找日誌

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

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

      • 高亮整條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
        }
      • 只高亮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
        }