FreeBSDには clog と呼ばれる循環ログファイルをサポートするユーティリティがあります。
これは、一部のサービス(systemdとそのジャーナルの外部)のログの保守を回避するために非常に興味深いものです。
Linuxやrsyslogで同じことをする代替手段はありますか?
both FreeBSD and Linux、およびその他のオペレーティングシステムには、ほとんど同じことを行うツールがあります。
次のツールは、サイズが制限され、自動的にローテーションされ、オンデマンドで回転可能なログファイルセットを、指定されたディレクトリに保持します。
multilog
from daemontools 、またはBruce Guenterの multilog
from daemontools-encore 、またはAdam Sampsonのmultilog
from freedts6-log
from s6svlogd
from runittinylog
from perpcyclog
from nosh使い方は非常に簡単です。通常の方法で、ログに記録されるプロセスの標準出力と標準エラーをパイプを介して標準入力に送信します。
./記録するもの2>&1 | cyclogのログ/
cyclog
は、TAI64Nタイムスタンプを標準で行に追加します。すでにタイムスタンプが付けられている場合のタイムスタンプなしの処理では、multilog
s、s6-log
、またはsvlogd
のいずれかを使用します。各タイムスタンプの追加はデフォルト以外のオプションです。
あなたが指摘するものは、FreeBSD syslog
自体を変更しており、2001年にリリースされたパッチで、今日はきれいに適用されない可能性があり、別の出力ファイルメカニズムを備えています。
別のアプローチは、最初にsyslogを使用する代わりに、syslogデーモンを完全に置き換えるだけでなく、標準エラーにログを記録するようにサービスを構成する(標準エラーをログサービスにパイプするサービス管理下で)のと同じです。
例:noshツールセットは、syslogのジョブを分割し、前述のロギングツールのいずれかの標準入力を介してフィードするのに適した出力を生成する、いくつかのそのような代替物を提供します。
klog-read
という名前のシンプルなプログラムを実行して/proc/kmsg
から読み取り、そのログストリームを標準エラーに書き込むだけのklogd
サービス。local-syslog-read
という名前のプログラムを実行してsyslog-read
(BSD上の/dev/log
)からデータグラムを読み取る/run/log
サービスそのログストリームを標準エラーに書き込みます。udp-syslog-read
プログラムを実行してUDP syslogポートをリッスンし、そのログストリームを標準エラーに書き込むだけのsyslog-read
サービス。local-priv-syslog-read
プログラムを実行してsyslog-read
からデータグラムを読み取り、そのログストリームを標準エラーに書き込むだけの/run/logpriv
サービス。