Ubuntuマシンに複数のデーモンを配布し、それをシステムサービスにラップしました。標準出力はデフォルトでログにリダイレクトされますが、これは私が望むものです。
Ubuntu(そしてDebianでも同じようです)のデフォルト設定は、すべてのイベントを/run/systemd/journal/syslogにログを渡すことです(/etc/systemd/journald.conf:#ForwardToSyslogを参照)。 =yes)imuxsockモジュールを使用して、rsyslogにそこからデータを抽出させる(/etc/rsyslog.confを参照)。デフォルトでは、/etc/rsyslog.d/50-default.confに次の行があるため、この内容も表示できます。
。;auth,authpriv.none -/var/log/syslog
つまり、認証されていないすべてのデータは/var/log/syslogに保存されます。
私はJournaldでサービスの出力を追跡したかったので、/var/log/journal(/etc/systemd/journald.confのStorageのデフォルトはautoです)を生成してJournaldログファイルを永久化しました。
その結果、すべてのログデータが複製されます。これは一度はジャーナルに保存され、一度はrsyslogの/var/log/syslogに保存されます。
そのため、さまざまな理由でサービスデータをログに保存したいのですが、そのデータを複製したくありません(ログが多すぎます!)。
いくつかのオプションが表示されます。
- rsyslog を完全に無効にします。これにより、他のサービスの多くのデータを見逃すことが心配されます。私のインフラストラクチャの他のコードが/var/log/*を読むかどうかを知っている人はいますか?
- 私のサービスに対して選択されたデフォルトのロギング機能/レベルであるようで、daemon.infoだけを無効にしてみました。次のことは、同じ施設/レベルを持つ他の有用なメッセージを無視することを心配しています。
。;auth、authpriv.none; =info-/var/log/syslog
- imjournal入力モジュールを使用し、imuxsockを無視し(fedoraと同様)、rsyslog / journald統合を変更し、各サービスに対してより具体的なrsyslogルールを作成します。
今質問は次のとおりです。推奨される進行方法は何ですか?
ベストアンサー1
古い質問であることはわかりましたが、ほぼすべて来ました。すべてのサービスのログエントリがシステムログに記録されないようにするには、daemon.none
次のように追加します。
*.*;auth,authpriv.none,daemon.none -/var/log/syslog
デーモンのログ出力は、デフォルトでSyslogFacility=daemon
ファイルを取得した理由を示しますdaemon.log
。
サービスの1つだけを使用する場合は、そのサービスファイルで識別子(0〜9を使用可能)を使用してから、上記の関連ディレクティブ(例:)を含めることができます。SyslogFacility=
このlocal0
ログlocal0.none
エントリを外部でフィルタリングします。のsyslog
...
https://www.freedesktop.org/software/systemd/man/systemd.exec.html