1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243
|
<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_open"
xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
<title>sd_journal_open</title>
<productname>systemd</productname>
</refentryinfo>
<refmeta>
<refentrytitle>sd_journal_open</refentrytitle>
<manvolnum>3</manvolnum>
</refmeta>
<refnamediv>
<refname>sd_journal_open</refname>
<refname>sd_journal_open_directory</refname>
<refname>sd_journal_open_directory_fd</refname>
<refname>sd_journal_open_files</refname>
<refname>sd_journal_open_files_fd</refname>
<refname>sd_journal_open_namespace</refname>
<refname>sd_journal_close</refname>
<refname>sd_journal</refname>
<refname>SD_JOURNAL_LOCAL_ONLY</refname>
<refname>SD_JOURNAL_RUNTIME_ONLY</refname>
<refname>SD_JOURNAL_SYSTEM</refname>
<refname>SD_JOURNAL_CURRENT_USER</refname>
<refname>SD_JOURNAL_OS_ROOT</refname>
<refname>SD_JOURNAL_ALL_NAMESPACES</refname>
<refname>SD_JOURNAL_INCLUDE_DEFAULT_NAMESPACE</refname>
<refname>SD_JOURNAL_TAKE_DIRECTORY_FD</refname>
<refpurpose>Open the system journal for reading</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcsynopsisinfo>#include <systemd/sd-journal.h></funcsynopsisinfo>
<funcprototype>
<funcdef>int <function>sd_journal_open</function></funcdef>
<paramdef>sd_journal **<parameter>ret</parameter></paramdef>
<paramdef>int <parameter>flags</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_journal_open_namespace</function></funcdef>
<paramdef>sd_journal **<parameter>ret</parameter></paramdef>
<paramdef>const char *<parameter>namespace</parameter></paramdef>
<paramdef>int <parameter>flags</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_journal_open_directory</function></funcdef>
<paramdef>sd_journal **<parameter>ret</parameter></paramdef>
<paramdef>const char *<parameter>path</parameter></paramdef>
<paramdef>int <parameter>flags</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_journal_open_directory_fd</function></funcdef>
<paramdef>sd_journal **<parameter>ret</parameter></paramdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>flags</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_journal_open_files</function></funcdef>
<paramdef>sd_journal **<parameter>ret</parameter></paramdef>
<paramdef>const char **<parameter>paths</parameter></paramdef>
<paramdef>int <parameter>flags</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_journal_open_files_fd</function></funcdef>
<paramdef>sd_journal **<parameter>ret</parameter></paramdef>
<paramdef>int <parameter>fds[]</parameter></paramdef>
<paramdef>unsigned <parameter>n_fds</parameter></paramdef>
<paramdef>int <parameter>flags</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>void <function>sd_journal_close</function></funcdef>
<paramdef>sd_journal *<parameter>j</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><function>sd_journal_open()</function> opens the log journal
for reading. It will find all journal files automatically and
interleave them automatically when reading. As first argument it
takes a pointer to a <varname>sd_journal</varname> pointer, which,
on success, will contain a journal context object. The second
argument is a flags field, which may consist of the following
flags ORed together: <constant>SD_JOURNAL_LOCAL_ONLY</constant>
makes sure only journal files generated on the local machine will
be opened. <constant>SD_JOURNAL_RUNTIME_ONLY</constant> makes sure
only volatile journal files will be opened, excluding those which
are stored on persistent storage.
<constant>SD_JOURNAL_SYSTEM</constant> will cause journal files of
system services and the kernel (in opposition to user session
processes) to be opened.
<constant>SD_JOURNAL_CURRENT_USER</constant> will cause journal
files of the current user to be opened. If neither
<constant>SD_JOURNAL_SYSTEM</constant> nor
<constant>SD_JOURNAL_CURRENT_USER</constant> are specified, all
journal file types will be opened.</para>
<para><function>sd_journal_open_namespace()</function> is similar to
<function>sd_journal_open()</function> but takes an additional <parameter>namespace</parameter> parameter
that specifies which journal namespace to operate on. If specified as <constant>NULL</constant> the call
is identical to <function>sd_journal_open()</function>. If non-<constant>NULL</constant> only data from
the namespace identified by the specified parameter is accessed. This call understands two additional
flags: if <constant>SD_JOURNAL_ALL_NAMESPACES</constant> is specified the
<parameter>namespace</parameter> parameter is ignored and all defined namespaces are accessed
simultaneously; if <constant>SD_JOURNAL_INCLUDE_DEFAULT_NAMESPACE</constant> the specified namespace and
the default namespace are accessed but no others (this flag has no effect when
<parameter>namespace</parameter> is passed as <constant>NULL</constant>). For details about journal
namespaces see
<citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
<para><function>sd_journal_open_directory()</function> is similar to <function>sd_journal_open()</function> but
takes an absolute directory path as argument. All journal files in this directory will be opened and interleaved
automatically. This call also takes a flags argument. The flags parameters accepted by this call are
<constant>SD_JOURNAL_OS_ROOT</constant>, <constant>SD_JOURNAL_SYSTEM</constant>, and
<constant>SD_JOURNAL_CURRENT_USER</constant>. If <constant>SD_JOURNAL_OS_ROOT</constant> is specified, journal
files are searched for below the usual <filename>/var/log/journal</filename> and
<filename>/run/log/journal</filename> relative to the specified path, instead of directly beneath it.
The other two flags limit which files are opened, the same as for <function>sd_journal_open()</function>.
</para>
<para><function>sd_journal_open_directory_fd()</function> is similar to
<function>sd_journal_open_directory()</function>, but takes a file descriptor referencing a directory in the file
system instead of an absolute file system path. In addition to the flags accepted by
<function>sd_journal_open_directory()</function>, this function also accepts
<constant>SD_JOURNAL_TAKE_DIRECTORY_FD</constant>. If <constant>SD_JOURNAL_TAKE_DIRECTORY_FD</constant> is
specified, the function will take the ownership of the specified file descriptor on success, and it will be
closed by <function>sd_journal_close()</function>, hence the caller of the function must not close the file
descriptor. When the flag is not specified, <function>sd_journal_close()</function> will not close the file
descriptor, so the caller should close it after <function>sd_journal_close()</function>.</para>
<para><function>sd_journal_open_files()</function> is similar to <function>sd_journal_open()</function> but takes a
<constant>NULL</constant>-terminated list of file paths to open. All files will be opened and interleaved
automatically. This call also takes a flags argument, but it must be passed as 0 as no flags are currently
understood for this call. Please note that in the case of a live journal, this function is only useful for
debugging, because individual journal files can be rotated at any moment, and the opening of specific files is
inherently racy.</para>
<para><function>sd_journal_open_files_fd()</function> is similar to <function>sd_journal_open_files()</function>
but takes an array of open file descriptors that must reference journal files, instead of an array of file system
paths. Pass the array of file descriptors as second argument, and the number of array entries in the third. The
flags parameter must be passed as 0.</para>
<para><varname>sd_journal</varname> objects cannot be used in the
child after a fork. Functions which take a journal object as an
argument (<function>sd_journal_next()</function> and others) will
return <constant>-ECHILD</constant> after a fork.
</para>
<para><function>sd_journal_close()</function> will close the
journal context allocated with
<function>sd_journal_open()</function> or
<function>sd_journal_open_directory()</function> and free its
resources.</para>
<para>When opening the journal only journal files accessible to
the calling user will be opened. If journal files are not
accessible to the caller, this will be silently ignored.</para>
<para>See
<citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>
for an example of how to iterate through the journal after opening
it with <function>sd_journal_open()</function>.</para>
<para>A journal context object returned by
<function>sd_journal_open()</function> references a specific
journal entry as <emphasis>current</emphasis> entry, similar to a
file seek index in a classic file system file, but without
absolute positions. It may be altered with
<citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>
and
<citerefentry><refentrytitle>sd_journal_seek_head</refentrytitle><manvolnum>3</manvolnum></citerefentry>
and related calls. The current entry position may be exported in
<emphasis>cursor</emphasis> strings, as accessible via
<citerefentry><refentrytitle>sd_journal_get_cursor</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
Cursor strings may be used to globally identify a specific journal
entry in a stable way and then later to seek to it (or if the
specific entry is not available locally, to its closest entry in
time)
<citerefentry><refentrytitle>sd_journal_seek_cursor</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
<para>Notification of journal changes is available via
<function>sd_journal_get_fd()</function> and related calls.</para>
</refsect1>
<refsect1>
<title>Return Value</title>
<para>The <function>sd_journal_open()</function>,
<function>sd_journal_open_directory()</function>, and
<function>sd_journal_open_files()</function> calls return 0 on
success or a negative errno-style error code.
<function>sd_journal_close()</function> returns nothing.</para>
</refsect1>
<refsect1>
<title>Notes</title>
<xi:include href="threads-aware.xml" xpointer="strict"/>
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
</refsect1>
<refsect1>
<title>History</title>
<para><function>sd_journal_open()</function>,
<function>sd_journal_open_directory()</function>, and
<function>sd_journal_close()</function> were added in version 187.</para>
<para><function>sd_journal_open_files()</function> was added in version 205.</para>
<para><function>sd_journal_open_directory_fd()</function> and
<function>sd_journal_open_files_fd()</function> were added in version 230.</para>
<para><function>sd_journal_open_namespace()</function> was added in version 245.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para><simplelist type="inline">
<member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>sd_journal_get_data</refentrytitle><manvolnum>3</manvolnum></citerefentry></member>
</simplelist></para>
</refsect1>
</refentry>
|