syslog-ngの良い機能が見つかりました。記録計ユーザー・プロセスの内容を記録するためのロギング・ユーザー名を取得します。この周辺:
peterh$ echo test log message|logger
それから私はこれを得ます/var/log/messages
:
Oct 12 16:38:29 thehost peterh: test log message
ここで、「thehost」はサーバーのホスト名、「peterh」は以下のコマンドのユーザー名です。
今私が望むもの:syslog-ngを使用して、特定のユーザーのログエントリを特定のファイルに収集したいと思います。。
ログファイル全体をフィルタリングするsyslog-ngの機能はひどいようですが、時には機能しません。
# Doesn't work - it doesn't do anything
filter f_peterh { match('peterh'); };
destination d_filter { file("/var/log/peterh.log"); };
log { source(s_src); filter(f_peterh); destination(d_peterh); };
Web上のさまざまな場所で利用可能な文書には、ログメッセージのバイナリ形式から関連RFCまで、すべての内容が記載されています。システムログでユーザー名をフィルタリングする方法。
どうすればいいですか?
答え1
これがまだあなたに効果があるかどうかはわかりませんが、ユーザー名でフィルタリングしたい他の人にとっては、これが私ができることについての参照です。
次のフィルタを作成しました。
filter sampleUserFilter {
facility (user) and match ("myUser" value ("PROGRAM"));
};
これにより、(ロガーを使用して)特定のユーザーからのメッセージを別々のファイルにルーティングできます。