SD-JOURNAL(3) sd-journal SD-JOURNAL(3)

.SH "NAME" sd-journal - APIs for submitting and querying log entries to and from the journal

.SH "SYNOPSIS"

```
#include <systemd/sd-journal.h>
```

.HP 912u

**pkg-config --cflags --libs libsystemd**

.SH "DESCRIPTION"

.PP sd-journal.h is part of [**libsystemd**(3)](/man/os/systemd/libsystemd.3) and provides APIs to submit and query log entries. The APIs exposed act both as client for the [**systemd-journald.service**(8)](/man/os/systemd/systemd-journald.service.8) journal service and as parser for the journal files on disk.

.PP See [**sd\_journal\_print**(3)](/man/os/systemd/sd_journal_print.3), [**sd\_journal\_stream\_fd**(3)](/man/os/systemd/sd_journal_stream_fd.3), [**sd\_journal\_open**(3)](/man/os/systemd/sd_journal_open.3), [**sd\_journal\_next**(3)](/man/os/systemd/sd_journal_next.3), [**sd\_journal\_get\_realtime\_usec**(3)](/man/os/systemd/sd_journal_get_realtime_usec.3), [**sd\_journal\_add\_match**(3)](/man/os/systemd/sd_journal_add_match.3), [**sd\_journal\_seek\_head**(3)](/man/os/systemd/sd_journal_seek_head.3), [**sd\_journal\_enumerate\_fields**(3)](/man/os/systemd/sd_journal_enumerate_fields.3), [**sd\_journal\_get\_cursor**(3)](/man/os/systemd/sd_journal_get_cursor.3), [**sd\_journal\_get\_cutoff\_realtime\_usec**(3)](/man/os/systemd/sd_journal_get_cutoff_realtime_usec.3), [**sd\_journal\_get\_cutoff\_monotonic\_usec**(3)](/man/os/systemd/sd_journal_get_cutoff_monotonic_usec.3), [**sd\_journal\_get\_usage**(3)](/man/os/systemd/sd_journal_get_usage.3), [**sd\_journal\_get\_catalog**(3)](/man/os/systemd/sd_journal_get_catalog.3), [**sd\_journal\_get\_fd**(3)](/man/os/systemd/sd_journal_get_fd.3), [**sd\_journal\_has\_runtime\_files**(3)](/man/os/systemd/sd_journal_has_runtime_files.3) and [**sd\_journal\_has\_persistent\_files**(3)](/man/os/systemd/sd_journal_has_persistent_files.3) for more information about the functions implemented.

.PP Command line access for submitting entries to the journal is available with the [**systemd-cat**(1)](/man/os/systemd/systemd-cat.1) tool. Command line access for querying entries from the journal is available with the [**journalctl**(1)](/man/os/systemd/journalctl.1) tool.

.SH "THREAD SAFETY"

.PP Functions that operate on sd\_journal objects are thread agnostic — a given sd\_journal pointer may only be used from one thread at a time, but multiple independent threads may use multiple objects concurrently. Some functions — those that are used to send entries to the journal, like [**sd\_journal\_print**(3)](/man/os/systemd/sd_journal_print.3) and similar, or those that are used to retrieve global information like [**sd\_journal\_stream\_fd**(3)](/man/os/systemd/sd_journal_stream_fd.3) and [**sd\_journal\_get\_catalog\_for\_message\_id**(3)](/man/os/systemd/sd_journal_get_catalog_for_message_id.3) — are fully thread-safe and may be called from multiple threads in parallel.

.SH "OPTIONAL DEPENDENCIES"

.PP Depending on which build-time options are enabled, functions that operate on sd\_journal objects might cause optional shared libraries to be dynamically loaded via [**dlopen**(3)](/man/os/systemd/dlopen.3), such as decompression libraries (xz, lz4, zstd).

.SH "NOTES"

.PP Functions described here are available as a shared library, which can be compiled against and linked to with the **libsystemd** [**pkg-config**(1)](/man/os/systemd/pkg-config.1) file.

.PP The code described here uses [**getenv**(3)](/man/os/systemd/getenv.3), which is declared to be not multi-thread-safe. This means that the code calling the functions described here must not call [**setenv**(3)](/man/os/systemd/setenv.3) from a parallel thread. It is recommended to only do calls to **setenv()** from an early phase of the program when no other threads have been started.

.SH "SEE ALSO"

.PP [**systemd**(1)](/man/os/systemd/systemd.1), [**sd\_journal\_print**(3)](/man/os/systemd/sd_journal_print.3), [**sd\_journal\_stream\_fd**(3)](/man/os/systemd/sd_journal_stream_fd.3), [**sd\_journal\_open**(3)](/man/os/systemd/sd_journal_open.3), [**sd\_journal\_next**(3)](/man/os/systemd/sd_journal_next.3), [**sd\_journal\_get\_data**(3)](/man/os/systemd/sd_journal_get_data.3), [**sd\_journal\_get\_realtime\_usec**(3)](/man/os/systemd/sd_journal_get_realtime_usec.3), [**sd\_journal\_add\_match**(3)](/man/os/systemd/sd_journal_add_match.3), [**sd\_journal\_seek\_head**(3)](/man/os/systemd/sd_journal_seek_head.3), [**sd\_journal\_enumerate\_fields**(3)](/man/os/systemd/sd_journal_enumerate_fields.3), [**sd\_journal\_get\_cursor**(3)](/man/os/systemd/sd_journal_get_cursor.3), [**sd\_journal\_get\_cutoff\_realtime\_usec**(3)](/man/os/systemd/sd_journal_get_cutoff_realtime_usec.3), [**sd\_journal\_get\_cutoff\_monotonic\_usec**(3)](/man/os/systemd/sd_journal_get_cutoff_monotonic_usec.3), [**sd\_journal\_get\_usage**(3)](/man/os/systemd/sd_journal_get_usage.3), [**sd\_journal\_get\_fd**(3)](/man/os/systemd/sd_journal_get_fd.3), [**sd\_journal\_query\_unique**(3)](/man/os/systemd/sd_journal_query_unique.3), [**sd\_journal\_get\_catalog**(3)](/man/os/systemd/sd_journal_get_catalog.3), [**sd\_journal\_has\_runtime\_files**(3)](/man/os/systemd/sd_journal_has_runtime_files.3), [**sd\_journal\_has\_persistent\_files**(3)](/man/os/systemd/sd_journal_has_persistent_files.3), [**journalctl**(1)](/man/os/systemd/journalctl.1), [**sd-id128**(3)](/man/os/systemd/sd-id128.3), [**pkg-config**(1)](/man/os/systemd/pkg-config.1)

systemd 262.2

---

Document: sd-journal(3) from systemd 262.2-r1 (Chainguard OS)
Source: https://github.com/systemd/systemd
