web-dev-qa-db-fra.com

Comment se connecter à journald (systemd) via Python?

Je voudrais que logging.info() aille dans journald (systemd).

Jusqu'à présent, je n'ai trouvé que python modules qui lisent le journal (pas ce que je veux) ou modules qui fonctionnent comme ceci: journal.send('Hello world')

17
guettli

python-systemd a un JournalHandler que vous pouvez utiliser avec le framework de journalisation.

De la documentation:

import logging
from systemd.journal import JournalHandler

log = logging.getLogger('demo')
log.addHandler(JournalHandler())
log.setLevel(logging.INFO)
log.info("sent to journal")
25
martineg

Une alternative au package officiel, le package systemd fonctionne avec python 3.6. Sa source est également sur github .

L'implémentation est un miroir de la bibliothèque officielle, avec quelques changements mineurs:

import logging
from systemd import journal

log = logging.getLogger('demo')
log.addHandler(journal.JournaldLogHandler())
log.setLevel(logging.INFO)
log.info("sent to journal")

ou pour une méthode encore plus courte:

from systemd import journal

journal.write("Hello Lennart")
8
bschlueter