web-dev-qa-db-ja.com

特定のユニットのジャーナル出力を特定のファイルに送る方法は?

Arch Linuxのジャーナルにログ情報を出力するいくつかのデーモンが(systemdユニットとして)実行されているシステムがあります。これらのユニットファイルのいくつかのジャーナル出力を、場所を指定した別のテキストファイルに送り、基本的にユニットのサブセットのログファイルを作成したいと考えています。どうすればそれを実現できますか?

12
Amr Bekhit

これは不可能で上流では望ましくないようです(stdout/stderrを個々のファイルにリダイレクトします)。 http://lists.freedesktop.org/archives/systemd-devel/2012-March/004705.html -スレッド全体を読んで、これがどのように機能するかについての詳細なコンテキスト情報を確認してください。

できることは、syslogにログを記録し、その方法で個々のファイルに書き込むことです。または逆に、ユニットがログ自体を書き込むことができるプログラムを呼び出す場合は、それを使用してファイルにログを記録します。

systemdサービスのstdout/stderrを表示する もご覧ください。

現在のセットアップですでにできることは、使用することです
journalctl -u yourunitname > yourlogfile_for_yourunitname
ユニット「yourunitname」のジャーナル出力全体をファイルに送信します。

後半では、上記のメーリングリストスレッドからのLennartのヒントもご覧ください。

最近のsystemdバージョンでは、systemd-journalctl -o cat _SYSTEMD_UNIT=postgresql.serviceのようなものは、実際のメッセージのみを含み、他には何も含まない非常に単純な出力を作成する必要があります。 「-f」を渡してこれをライブにすることもできます。」

EDIT:実際、新しいsystemdバージョンの場合、コマンドはjournalctlと私の知る限りでは、上記の長いコマンドはjournalctl -u yourunitnameと同じであり、そこに-fを付けて出力を「追跡」することもできます(tailfまたはtail -fなど)。

10
doktor5000