Pythonのアプリケーションがsystemdの下で動作している場合、コンソールに出力されるものはすべてjournalに記録されます。しかし、これはプレーンテキストとしてのみログされるため、journalの便利なフィルタリング機能の多くが失われます。
Pythonでsystemdのjournalにログを書き出す方法はいくつかあります。その一つは、python-systemd
というパッケージが提供するJournalHandler
を使用する方法です。この方法では、Pythonの標準的なlogging
フレームワークを使用してログを書き出すことができます。
import logging
from systemd.journal import JournalHandler
log = logging.getLogger('demo')
log.addHandler(JournalHandler())
log.setLevel(logging.INFO)
log.info("sent to journal")
このコードは、demo
という名前のロガーを作成し、そのロガーにJournalHandler
を追加しています。そして、ロガーのログレベルをINFO
に設定し、info
メソッドを使用してメッセージをjournalに送信しています。
また、systemd
パッケージもPython 3.6と互換性があり、公式のライブラリとほぼ同じ実装を提供しています。このパッケージを使用すると、以下のように短いコードでjournalにメッセージを書き出すことができます。
from systemd import journal
journal.write("Hello Lennart")
これらの方法を使用すると、Pythonからsystemdのjournalに直接ログを書き出すことができます。これにより、アプリケーションのログ管理をより効率的に行うことが可能になります。