Logs

Daemontools multilog 失去日誌行時間資訊。如何解決?

  • March 23, 2013

我正在使用daemontools來監視程序及其輸出日誌。我正在使用multilog將日誌寫入磁碟。

日誌的執行腳本是:

#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
cd /usr/local/script_dir
exec multilog t s16777215 n50 '!tai64nlocal' '!/bin/gzip' /var/log/script_log

被監視的程序也將輸出寫入 stderr。因此,在程序的執行腳本中,有以下幾行將 stderr 重定向到 stdout:

exec 2>&1
exec ./my_process

但是,在跟踪日誌文件時,我看到數百行輸出突然出現(受監控的程序每隔幾秒寫入一次輸出),並且日誌行上的時間戳在亞微秒級別上有所不同。我從過程的性質上知道,日誌行之間的時間差並沒有那麼小。顯然,multilog 正在緩衝輸出,然後在準備寫入文件時添加時間戳。我希望時間戳更準確地反映該行的輸出時間。如何解決這個問題?

被監控的腳本是一個 Python 腳本。為了使所有標準流都沒有緩衝,我發現可以將-u選項傳遞給解釋器。這解決了我的問題。

引用自:https://unix.stackexchange.com/questions/68059