指定されたシステムサービスのロギングをオフにする

指定されたシステムサービスのロギングをオフにする

Journald / journalctlに記録したくない特定のシステムサービスがあります。現在の原因はsyslogに記録されており(すでに置き換えられている)、ジャーナルd / journalctlログがそのサービスのログでいっぱいになっているためです(ディスクスペースの問題)。

Storage=volatileこれで、ディスクに書きすぎないようにJournald / journalctlの設定を変更しました。SystemMaxUseSystemKeepFree変更できることはわかっていますが、/etc/systemd/journald.conf他のサービスのログをその特定のサービスで上書きするので、これは理想的ではありません。私はJournald / journalctlを引き続き使用したいのですが、特定のサービスには使用しません。

/etc/systemd/system/myservice.serviceJournald / 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(またはログが保存される場所)の名前を変更することです。その後、ジャーナルはディスクに何も書きません。デスクトップは高速ですが、この動作はしばしば問題を引き起こします。ログがディスクに書き込まれるのを待つ必要があります。 :)

関連情報