閱讀129 返回首頁    go 阿裏雲 go 技術社區[雲棲]


lnav:Linux 下一個基於控製台的高級日誌文件查看器

服務器日誌是一個由服務器創建並經常更新、用於抓取特定服務和應用的所有活動信息的日誌文件。當你的應用或者服務出現問題時這個文件就會非常有用。從日誌文件中你可以獲取所有關於該問題的信息,例如基於警告或者錯誤信息它什麼時候開始表現不正常。

LNAV(Log file Navigator)是 Linux 下一個基於控製台的高級日誌文件查看器。它和其它文件查看器,例如 cat、more、tail 等,完成相同的任務,但有很多普通文件查看器沒有的增強功能(尤其是它自帶多種顏色和易於閱讀的格式)。

它能在解壓多個壓縮日誌文件(zip、gzip、bzip)的同時把它們合並到一起進行導航。基於消息的時間戳,lnav 能把多個日誌文件合並到一個視圖(Single Log Review),從而避免打開多個窗口。左邊的顏色欄幫助顯示消息所屬的文件。

警告和錯誤的數量以(黃色和紅色)高亮顯示,因此我們能夠很輕易地看到問題出現在哪裏。它會自動加載新的日誌行。

它按照消息時間戳排序顯示所有文件的日誌消息。頂部和底部的狀態欄會告訴你位於哪個日誌文件。如果你想按特定的模式查找,隻需要在搜索彈窗中輸入就會即時顯示。

內建的日誌消息解析器會自動從每一行中發現和提取詳細信息。

當你用一個普通文件查看器打開一個日誌文件時,它會用純文本格式顯示所有信息(如果用更直白的話說的話:純白——黑底白字),這樣很難去發現和理解哪裏有警告或錯誤信息。為了克服這種情況,快速找到警告和錯誤信息來解決問題, lnav 是一個入手可用的更好的解決方案。

大部分常見的 Linux 日誌文件都放在 /var/log/

lnav 自動檢測以下日誌格式

  • Common Web Access Log format(普通 web 訪問日誌格式)
  • CUPS page_log
  • Syslog
  • Glog
  • VMware ESXi/vCenter 日誌
  • dpkg.log
  • uwsgi
  • “Generic” – 以時間戳開始的任何消息
  • Strace
  • sudo
  • gzib & bizp

lnav 高級功能

  • 單一日誌視圖 - 基於消息時間戳,所有日誌文件內容都會被合並到一個單一視圖
  • 自動日誌格式檢測 - lnav 支持大部分日誌格式
  • 過濾器 - 能進行基於正則表達式的過濾
  • 時間線視圖
  • 適宜打印視圖(Pretty-Print)
  • 使用 SQL 查詢日誌
  • 自動數據抽取
  • 實時操作
  • 語法高亮
  • Tab 補全
  • 當你查看相同文件集時可以自動保存和恢複會話信息。
  • Headless 模式

如何在 Linux 中安裝 lnav

大部分發行版(Debian、Ubuntu、Mint、Fedora、suse、openSUSE、Arch Linux、Manjaro、Mageia 等等)默認都有 lnav 軟件包,在軟件包管理器的幫助下,我們可以很輕易地從發行版官方倉庫中安裝它。對於 CentOS/RHEL 我們需要啟用 EPEL 倉庫


  1. [在 Debian/Ubuntu/LinuxMint 上安裝 lnav]
  2. $ sudo apt-get install lnav
  3. [在 RHEL/CentOS 上安裝 lnav]
  4. $ sudo yum install lnav
  5. [在 Fedora 上安裝 lnav]
  6. $ sudo dnf install lnav
  7. [在 openSUSE 上安裝 lnav]
  8. $ sudo zypper install lnav
  9. [在 Mageia 上安裝 lnav]
  10. $ sudo urpmi lnav
  11. [在基於 Arch Linux 的係統上安裝 lnav]
  12. $ yaourt -S lnav

如果你的發行版沒有 lnav 軟件包,別擔心,開發者提供了 .rpm 和 .deb 安裝包,因此我們可以輕易安裝。確保你從 開發者 github 頁麵 下載最新版本的安裝包。


  1. [在 Debian/Ubuntu/LinuxMint 上安裝 lnav]
  2. $ sudo wget https://github.com/tstack/lnav/releases/download/v0.8.1/lnav_0.8.1_amd64.deb
  3. $ sudo dpkg -i lnav_0.8.1_amd64.deb
  4. [在 RHEL/CentOS 上安裝 lnav]
  5. $ sudo yum install https://github.com/tstack/lnav/releases/download/v0.8.1/lnav-0.8.1-1.x86_64.rpm
  6. [在 Fedora 上安裝 lnav]
  7. $ sudo dnf install https://github.com/tstack/lnav/releases/download/v0.8.1/lnav-0.8.1-1.x86_64.rpm
  8. [在 openSUSE 上安裝 lnav]
  9. $ sudo zypper install https://github.com/tstack/lnav/releases/download/v0.8.1/lnav-0.8.1-1.x86_64.rpm
  10. [在 Mageia 上安裝 lnav]
  11. $ sudo rpm -ivh https://github.com/tstack/lnav/releases/download/v0.8.1/lnav-0.8.1-1.x86_64.rpm

不帶參數運行 lnav

默認情況下你不帶參數運行 lnav 時它會打開 syslog 文件。


  1. # lnav

使用 lnav 查看特定日誌文件

要用 lnav 查看特定的日誌文件,在 lnav 命令後麵添加日誌文件路徑。例如我們想看 /var/log/dpkg.log日誌文件。


  1. # lnav /var/log/dpkg.log

用 lnav 查看多個日誌文件

要用 lnav 查看多個日誌文件,在 lnav 命令後麵逐個添加日誌文件路徑,用一個空格隔開。例如我們想查看/var/log/dpkg.log 和 /var/log/kern.log 日誌文件。

左邊的顏色欄幫助顯示消息所屬的文件。另外頂部狀態欄還會顯示當前日誌文件的名稱。為了顯示多個日誌文件,大部分應用經常會打開多個窗口、或者在窗口中水平或豎直切分,但 lnav 使用不同的方式(它基於日期組合在同一個窗口顯示多個日誌文件)。


  1. # lnav /var/log/dpkg.log /var/log/kern.log

使用 lnav 查看壓縮的日誌文件

要查看並同時解壓被壓縮的日誌文件(zip、gzip、bzip),在 lnav 命令後麵添加 -r 選項。


  1. # lnav -r /var/log/Xorg.0.log.old.gz

直方圖視圖

首先運行 lnav 然後按 i 鍵切換到/出直方圖視圖。

查看日誌解析器結果

首先運行 lnav 然後按 p 鍵打開顯示日誌解析器結果。

語法高亮

你可以搜索任何給定的字符串,它會在屏幕上高亮顯示。首先運行 lnav 然後按 / 鍵並輸入你想查找的字符串。為了測試,我搜索字符串 Default,看下麵的截圖。

Tab 補全

命令窗口支持大部分操作的 tab 補全。例如,在進行搜索時,你可以使用 tab 補全屏幕上顯示的單詞,而不需要複製粘貼。為了測試,我搜索字符串 /var/log/Xorg,看下麵的截圖。


原文發布時間為:2017-04-21

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-22 14:32:40

  上一篇:go  LockSupport 源碼閱讀
  下一篇:go  阿裏感悟(九)-如何才能晉升