網站搜尋

手動新增訊息到 Linux 系統日誌檔案


日誌檔案是一種包含一組記錄(或事件清單)的檔案,這些記錄是由系統本身記錄的。使用日誌檔案,系統管理員可以追蹤特定日期或時間發生的事件。大多數情況下,日誌檔案是管理員用來進行故障排除的。日誌檔案會自動生成並保存在一個共用目錄下 - /var/log/。我們也可以手動將訊息添加到 Linux 系統日誌檔案中。例如,在設置日誌伺服器之後,你可能想要檢查日誌伺服器是否運作正常。為此,我們可以手動在日誌檔案中新增一些條目來測試日誌伺服器。這時,logger 命令就非常有用。

使用 Logger 命令將訊息添加到 Linux 系統日誌文件

logger 命令是 util-linux 套件的一部分,所以不用費心去安裝它。讓我來給你展示一些 logger 命令的範例。

手動將條目添加到系統日誌文件絕對很簡單!logger 命令的典型用法是:

logger <message-to-add>

範例:

$ logger Welcome to OSTechNix

上述命令將會將條目 'Welcome to OSTechNix' 添加到系統日誌文件中。

讓我們使用 tail 命令來驗證訊息是否已被添加:

$ tail -l /var/log/syslog

範例輸出:

Jan 31 07:19:23 ubuntuserver systemd[1705]: Listening on REST API socket for snapd user session agent.
Jan 31 07:19:23 ubuntuserver systemd[1705]: Listening on GnuPG network certificate management daemon.
Jan 31 07:19:23 ubuntuserver systemd[1705]: Listening on GnuPG cryptographic agent and passphrase cache.
Jan 31 07:19:23 ubuntuserver systemd[1705]: Reached target Sockets.
Jan 31 07:19:23 ubuntuserver systemd[1705]: Reached target Timers.
Jan 31 07:19:23 ubuntuserver systemd[1705]: Reached target Basic System.
Jan 31 07:19:23 ubuntuserver systemd[1]: Started User Manager for UID 1000.
Jan 31 07:19:23 ubuntuserver systemd[1705]: Reached target Default.
Jan 31 07:19:23 ubuntuserver systemd[1705]: Startup finished in 298ms.
Jan 31 07:33:14 ubuntuserver sk: Welcome to OSTechNix

使用 logger 命令將訊息添加到 Linux 系統日誌文件

如您在輸出中所見,給定的訊息已被添加到 syslog 檔案中。

注意:

不同的 Linux 作業系統會將日誌訊息儲存在不同的檔案中。我建議你查看 /var/log/ 目錄,以了解日誌儲存在那些檔案中。在像 CentOS 這樣基於 RPM 的系統中,一般的日誌訊息會儲存在 /var/log/messages 檔案,而不是 /var/log/syslog 檔案。

您也可以通過將訊息包在單引號或雙引號中來添加它們。

$ logger "Welcome to OSTechNix blog"

或者,

$ logger 'Howdy, Welcome to OSTechNix blog'

使用 tail 命令檢查條目是否已添加到 syslog 文件中:

$ tail -l /var/log/syslog 
[...]
Jan 31 07:40:02 ubuntuserver sk: Welcome to OSTechNix blog
Jan 31 07:40:31 ubuntuserver sk: Howdy, Welcome to OSTechNix blog

將記錄器 PID 添加到系統日誌

我們甚至可以使用 -i 標誌,如下所示,將 記錄器進程的 PID 與每一行一起記錄。

$ logger -i 'Howdy, Welcome to OSTechNix blog'

使用 tail 指令驗證日誌訊息:

$ tail -l /var/log/syslog 
[...]
Jan 31 07:49:22 ubuntuserver sk[1879]: Howdy, Welcome to OSTechNix blog

這裡,1879 是 logger 的進程 ID。

為訊息添加標籤

如您可能在上述輸出中注意到,新增的條目已標記為當前登入的用戶名,即 sk。預設標籤是終端機上登入的用戶名稱。然而,我們可以使用 -t 標誌,將每一行都標記為特定標籤後記錄下來。

$ logger -i -t ostechnix 'Howdy, Welcome to OSTechNix blog'

檢查日誌條目:

$ tail -l /var/log/syslog 
[...]
Jan 31 07:54:02 ubuntuserver ostechnix[1881]: Howdy, Welcome to OSTechNix blog

看到了嗎?最後一條目標註了 ostechnix,其進程 ID 是 1881。

將檔案中的訊息添加到日誌檔案中

也可以將檔案中的條目新增到我們的系統日誌檔案中。

讓我們創建一個範例文字檔。

$ echo "This is test file" > file.txt
$ cat file.txt 
This is test file

現在使用以下命令將 file.txt 的內容添加到系統日誌檔案中:

$ logger -f file.txt

檢查日誌文件:

$ tail -l /var/log/syslog 
[...]
Jan 31 08:43:06 ubuntuserver sk: This is test file

如果輸入檔案中有任何空行,你可以使用 -e 標誌將它們排除在日誌檔案之外,如下所示。

$ logger -e -f file.txt

帶有優先級的日誌訊息

可以使用給定的優先級記錄訊息。

$ logger "Welcome To OSTechNix" --priority user.warning

預設優先權是 'user.notice'。請參閱 logger 手冊頁以了解所有可用的優先權選項。

從 'stdin' 接收輸入並將訊息記錄到系統日誌

我們可以將標準輸入的輸入通過管道傳送,並使用命令將它們推送到系統日誌:

$ echo "Welcome to OSTechNix" | logger

將訊息傳送到遠端日誌伺服器

要將訊息發送到在特定端口運行的遠程 syslog 伺服器,請執行:

$ logger "Welcome to OSTechNix" --server <hostname-or-ip> --port <port-no>

或者,

$ logger "Welcome to OSTechNix" -n <hostname-or-ip> -p <port-no>

預設的連接埠號是 514。

限制訊息的大小

我們可以使用 --size 標記來設定允許的最大訊息大小。

$ logger --size 5 abcdefghijklmnopqrswxyz

檢查日誌消息大小:

$ tail -l /var/log/syslog 
[...]
Jan 31 09:09:02 ubuntuserver sk: abcde

預設值是 1KiB 個字元。

欲了解更多詳情,請查看 man 頁面。

$ man logger

結論

在這個簡短的教程中,我們討論了什麼是 logger 命令,以及如何使用 logger 命令手動將訊息新增到 Linux 系統日誌檔案,以測試日誌伺服器是否正常運作。

建議閱讀:

  • 如何在 Linux 中使用 Logrotate 管理日誌檔案