Journaldを使用して単位ごとのログ保存ポリシーを設定するには?

Journaldを使用して単位ごとのログ保存ポリシーを設定するには?

まれですが重要な情報を記録してくれる特別なサービスがあります。数ヶ月前に設定して今日実行しましたが、アイテムはjournalctl -n 50 --unit=my-serviceありませんでした。

私はほとんどのデバイスでこれらの動作に非常に満足しています。すぐに(または最大数日前に)起こったことが必要であり、数ヶ月前の記録には興味がありません。

journaldしかし、単一の特定の単位の記録に対して独立した保存および保存ポリシーがあることを知る方法はありますか?私はこれらの特定のログを5年間保持したいと思います。他のユニットのログはこれに影響されず、既存の動作を維持する必要があります。

理解が少し不足しているため、journald.conf(5)単位ごとの構成が可能な時期がわかりません。もしそうなら、どのファイルを編集/作成し、何を書くべきかについての短くて具体的な例をお寄せいただきありがとうございます。あるいは、確かに実現可能ではないと確信していても良い答えです。

メモ:私の具体的な例にはArch Linuxホストが含まれていますが、それは重要ではないようです。

答え1

日記を書くのに運が悪いようです。独立した「長期ストレージ」ログを生成する方法が見つからない限り(たとえば、現在のユーザーごとのログが異なる)、これが実現可能で合理的なアプローチであるかどうかはわかりません。私はsyslogd(とlogrotate)を設定する方が簡単だと思いました。

特徴2014年末には現れなかった、Lennart自身が確認しました。

そしてまだ来るようにも思えません。少なくとも「ログ:循環/清掃時優先順位別、サービス別保存時間を許可」という行はまだTODOファイルにあります(2016年7月11日改訂版リンク)

答え2

ログファイルを生成するのは非常に簡単です。デフォルトでは、ログのすべてのログはsyslogにも送信され、このデフォルトを設定する必要があります。 rsyslog.confは、syslogに渡されたエントリの処理方法を制御します。また、SyslogFacilityデフォルトでは、すべてのサービスのログエントリは通常ににdaemon表示されます。daemon.log/var/log

サービスファイルの[service]セクションに追加します。

SyslogFacility=local2

(数字は0~7まで可能です)https://www.freedesktop.org/software/systemd/man/systemd.exec.html

local2が特定のファイル(最初の行)に書き込まれ、追加でsyslogに書き込まれないように/ etc / rsyslog.confを変更します(変更する既存の行を探す)local2.none(すでにログにあります)。

local2.*                        /var/log/your-service-name.log
*.*;auth,authpriv.none,local2.none          -/var/log/syslog

[編集]まだすべてを修正する必要があります

*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none,local2.none      -/var/log/messages

もちろん、実際の保存はlogrotateを介して行われるべきです。

ファタイ

関連情報