rsyslog 沒有擷取輸出?

rsyslog 沒有擷取輸出?

我可以推 / 來自rsyslog 指令如下:

ping www.superuser.com 2>&1 | logger -p user.info

在我的系統上,可以使用簡單的tail -f /var/log/messages.它去那裡是因為 my 中的相應行/etc/rsyslog.config

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                -/var/log/messages

但是,同樣的事情不適用於我的自訂程式:

myprogram 2>&1 | logger -p user.info

myprogram 二進位檔案不會在呼叫後立即返回/退出 - 它會運行一段時間 - 並且不時地將訊息(使用 printf)列印到控制台。如果我不將其輸出傳輸到記錄器中,它就會以這種方式運行。如果我錯了請糾正我,但這種行為類似於命令(至少在到達目的地時)。

那為什麼我看不到 myprogram 的輸出呢/var/log/messages?輸出是否可以以某種方式緩衝並且它根本還沒有到達記錄器?會不會是配置線的其他問題rsyslog.conf

答案1

原來這是myprogram緩衝後的輸出。使用提到的技巧在這個問題中我想出了一個快速解決方案:

script -q -c "myprogram" | logger -p user.info

相關內容