2025-10-03 16:17:33 +02:00
|
|
|
.. SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
|
|
2013-02-09 15:37:35 -05:00
|
|
|
`systemd.journal` module
|
|
|
|
|
========================
|
|
|
|
|
|
|
|
|
|
.. automodule:: systemd.journal
|
|
|
|
|
:members: send, sendv, stream, stream_fd
|
|
|
|
|
:undoc-members:
|
|
|
|
|
|
|
|
|
|
`JournalHandler` class
|
|
|
|
|
----------------------
|
|
|
|
|
|
|
|
|
|
.. autoclass:: JournalHandler
|
2013-02-16 20:28:34 -05:00
|
|
|
|
|
|
|
|
Accessing the Journal
|
|
|
|
|
---------------------
|
|
|
|
|
|
2013-02-28 19:32:31 -05:00
|
|
|
.. autoclass:: _Reader
|
2013-02-16 20:28:34 -05:00
|
|
|
:undoc-members:
|
|
|
|
|
:inherited-members:
|
|
|
|
|
|
2013-02-28 19:32:31 -05:00
|
|
|
.. autoclass:: Reader
|
2013-02-16 20:28:34 -05:00
|
|
|
:undoc-members:
|
|
|
|
|
:inherited-members:
|
|
|
|
|
|
|
|
|
|
.. automethod:: __init__
|
2013-02-21 15:07:39 +01:00
|
|
|
|
2013-03-20 23:01:32 -04:00
|
|
|
.. autofunction:: _get_catalog
|
|
|
|
|
.. autofunction:: get_catalog
|
|
|
|
|
|
2013-02-23 01:11:36 +01:00
|
|
|
.. autoclass:: Monotonic
|
|
|
|
|
|
2013-02-21 15:07:39 +01:00
|
|
|
.. autoattribute:: systemd.journal.DEFAULT_CONVERTERS
|
|
|
|
|
|
2013-03-07 00:35:28 -05:00
|
|
|
Example: polling for journal events
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
This example shows that journal events can be waited for (using
|
|
|
|
|
e.g. `poll`). This makes it easy to integrate Reader in an external
|
|
|
|
|
event loop:
|
|
|
|
|
|
|
|
|
|
>>> import select
|
|
|
|
|
>>> from systemd import journal
|
|
|
|
|
>>> j = journal.Reader()
|
|
|
|
|
>>> j.seek_tail()
|
2015-09-05 13:33:40 +02:00
|
|
|
>>> journal.send('testing 1,2,3') # make sure we have something to read
|
|
|
|
|
>>> j.add_match('MESSAGE=testing 1,2,3')
|
2013-03-07 00:35:28 -05:00
|
|
|
>>> p = select.poll()
|
2013-05-09 18:10:30 -04:00
|
|
|
>>> p.register(j, j.get_events())
|
2015-09-05 13:33:40 +02:00
|
|
|
>>> p.poll() # doctest: +SKIP
|
2013-03-07 00:35:28 -05:00
|
|
|
[(3, 1)]
|
2015-09-05 13:33:40 +02:00
|
|
|
>>> j.get_next() # doctest: +SKIP
|
|
|
|
|
{'_AUDIT_LOGINUID': 1000,
|
|
|
|
|
'_CAP_EFFECTIVE': '0',
|
|
|
|
|
'_SELINUX_CONTEXT': 'unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023',
|
|
|
|
|
'_GID': 1000,
|
|
|
|
|
'CODE_LINE': 1,
|
|
|
|
|
'_HOSTNAME': '...',
|
|
|
|
|
'_SYSTEMD_SESSION': 52,
|
|
|
|
|
'_SYSTEMD_OWNER_UID': 1000,
|
|
|
|
|
'MESSAGE': 'testing 1,2,3',
|
|
|
|
|
'__MONOTONIC_TIMESTAMP':
|
|
|
|
|
journal.Monotonic(timestamp=datetime.timedelta(2, 76200, 811585),
|
|
|
|
|
bootid=UUID('958b7e26-df4c-453a-a0f9-a8406cb508f2')),
|
|
|
|
|
'SYSLOG_IDENTIFIER': 'python3',
|
|
|
|
|
'_UID': 1000,
|
|
|
|
|
'_EXE': '/usr/bin/python3',
|
|
|
|
|
'_PID': 7733,
|
|
|
|
|
'_COMM': '...',
|
|
|
|
|
'CODE_FUNC': '<module>',
|
|
|
|
|
'CODE_FILE': '<doctest journal.rst[4]>',
|
|
|
|
|
'_SOURCE_REALTIME_TIMESTAMP':
|
|
|
|
|
datetime.datetime(2015, 9, 5, 13, 17, 4, 944355),
|
|
|
|
|
'__CURSOR': 's=...',
|
|
|
|
|
'_BOOT_ID': UUID('958b7e26-df4c-453a-a0f9-a8406cb508f2'),
|
|
|
|
|
'_CMDLINE': '/usr/bin/python3 ...',
|
|
|
|
|
'_MACHINE_ID': UUID('263bb31e-3e13-4062-9bdb-f1f4518999d2'),
|
|
|
|
|
'_SYSTEMD_SLICE': 'user-1000.slice',
|
|
|
|
|
'_AUDIT_SESSION': 52,
|
|
|
|
|
'__REALTIME_TIMESTAMP': datetime.datetime(2015, 9, 5, 13, 17, 4, 945110),
|
|
|
|
|
'_SYSTEMD_UNIT': 'session-52.scope',
|
|
|
|
|
'_SYSTEMD_CGROUP': '/user.slice/user-1000.slice/session-52.scope',
|
|
|
|
|
'_TRANSPORT': 'journal'}
|
|
|
|
|
|
2013-02-21 15:07:39 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
Journal access types
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
.. autoattribute:: systemd.journal.LOCAL_ONLY
|
|
|
|
|
.. autoattribute:: systemd.journal.RUNTIME_ONLY
|
2013-07-18 00:03:09 -04:00
|
|
|
.. autoattribute:: systemd.journal.SYSTEM
|
|
|
|
|
.. autoattribute:: systemd.journal.CURRENT_USER
|
2016-09-20 09:03:07 -04:00
|
|
|
.. autoattribute:: systemd.journal.OS_ROOT
|
2013-02-21 15:07:39 +01:00
|
|
|
|
|
|
|
|
Journal event types
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
.. autoattribute:: systemd.journal.NOP
|
|
|
|
|
.. autoattribute:: systemd.journal.APPEND
|
|
|
|
|
.. autoattribute:: systemd.journal.INVALIDATE
|