Journald / journalctlに記録したくない特定のシステムサービスがあります。現在の原因はsyslogに記録されており(すでに置き換えられている)、ジャーナルd / journalctlログがそのサービスのログでいっぱいになっているためです(ディスクスペースの問題)。
Storage=volatile
これで、ディスクに書きすぎないようにJournald / journalctlの設定を変更しました。SystemMaxUse
をSystemKeepFree
変更できることはわかっていますが、/etc/systemd/journald.conf
他のサービスのログをその特定のサービスで上書きするので、これは理想的ではありません。私はJournald / journalctlを引き続き使用したいのですが、特定のサービスには使用しません。
/etc/systemd/system/myservice.service
Journald / journalctlに書き込まれないようにサービス単位ファイルで変更できる設定はありますか?
答え1
デバイス用に別々のロギング名前空間を作成し、必要に応じてロギング設定をカスタマイズします。
存在する/etc/.../myapp.service
:
[Service]
...
LogNamespace=noisy
この名前空間の新しい構成を作成します。
cd /etc/systemd
cp journald.conf [email protected]
nano [email protected]
必要に応じて構成を編集します。たとえば、私はアプリケーションのsyslogログに興味がないStorage=volatile
ので、これをsyslogに設定しました(アプリケーションログはすでに十分です)。RuntimeMaxUse=10M
注:ストレージが揮発性の場合は、Runtime*
varsではなくSystem*
varsを使用してください。
更新して再起動してください。
sudo systemctl daemon-reload
sudo systemctl restart myapp # maybe this is not necessary? Lmk if you find out
源泉:https://wiki.archlinux.org/title/Systemd/Journal#Per_unit_size_limit_by_a_journal_namespace
答え2
サービスのロギングを無効にしますが、まだ他のsyslogデーモン(rsyslogなど)に渡すことができるsystemd構成はありません。カスタムC ++プログラムで私が見たのは、ロギングをバイパスし、代わりにrsyslogが監視しているソケットへの直接接続を開くことです/run/systemd/journal/syslog
。
答え3
すべてArch Linux Wiki: Systemd/journals:
Arch Linuxでは、/var/log/journal/ディレクトリはsystemdパッケージの一部であり、ログ(/etc/systemd/journald.confのStorage =がautoに設定されている場合)は/var/log/journalに書き込まれます。 /。ディレクトリが削除されると、systemdはそのディレクトリを自動的に再生成せず、代わりに非永続的な方法でそのジャーナルを/run/systemd/journalに書き込みます。ただし、Journald.confにStorage = pertantを追加してsystemd-journald.serviceを再起動するか、システムを再起動すると、ディレクトリが再作成されます。
したがって、ユーザーがすべきことは/var/log/journal(またはログが保存される場所)の名前を変更することです。その後、ジャーナルはディスクに何も書きません。デスクトップは高速ですが、この動作はしばしば問題を引き起こします。ログがディスクに書き込まれるのを待つ必要があります。 :)