This file is part of systemd. Copyright 2012 Lennart Poettering systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. systemd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License <
refentry id="sd_journal_open">
<
title>sd_journal_open</
title>
<
productname>systemd</
productname>
<
contrib>Developer</
contrib>
<
firstname>Lennart</
firstname>
<
surname>Poettering</
surname>
<
email>lennart@poettering.net</
email>
<
refentrytitle>sd_journal_open</
refentrytitle>
<
refname>sd_journal_open</
refname>
<
refname>sd_journal_open_directory</
refname>
<
refname>sd_journal_open_files</
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>
<
refpurpose>Open the system journal for reading</
refpurpose>
<
funcdef>int <
function>sd_journal_open</
function></
funcdef>
<
paramdef>sd_journal** <
parameter>ret</
parameter></
paramdef>
<
paramdef>int <
parameter>flags</
parameter></
paramdef>
<
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>
<
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>
<
funcdef>void <
function>sd_journal_close</
function></
funcdef>
<
paramdef>sd_journal* <
parameter>j</
parameter></
paramdef>
<
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 <
literal>sd_journal</
literal> pointer, which on
success will contain journal context object afterwards. The
second argument is a flags field, which may consist of
the following flags ORed together:
<
literal>SD_JOURNAL_LOCAL_ONLY</
literal> makes sure
only journal files generated on the local machine will
be opened. <
literal>SD_JOURNAL_RUNTIME_ONLY</
literal>
makes sure only volatile journal files will be opened,
excluding those which are stored on persistent
storage. <
literal>SD_JOURNAL_SYSTEM</
literal>
will cause journal files of system services and the
kernel (in opposition to user session processes) to
be opened. <
literal>SD_JOURNAL_CURRENT_USER</
literal>
will cause journal files of the current user to be
opened. If neither <
literal>SD_JOURNAL_SYSTEM</
literal>
nor <
literal>SD_JOURNAL_CURRENT_USER</
literal> are
specified, all journal file types will be opened.</
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, but it must be passed as 0 as no flags
are currently understood for this call.</
para>
<
para><
function>sd_journal_open_files()</
function>
is similar to <
function>sd_journal_open()</
function>
but takes a <
literal>NULL</
literal>-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 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 in inherently racy.</
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>
<
citerefentry><
refentrytitle>sd_journal_next</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>
for an example how to iterate through the journal
<
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
<
citerefentry><
refentrytitle>sd_journal_next</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>
<
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
<
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
<
title>Return Value</
title>
<
para>The <
function>sd_journal_open()</
function> and
<
function>sd_journal_open_directory()</
function> calls
return 0 on success or a negative errno-style error
code. <
function>sd_journal_close()</
function> returns
<
para>The <
function>sd_journal_open()</
function>,
<
function>sd_journal_open_directory()</
function> and
<
function>sd_journal_close()</
function> interfaces are
available as shared library, which can be compiled and
<
literal>libsystemd-journal</
literal>
<
citerefentry><
refentrytitle>pkg-config</
refentrytitle><
manvolnum>1</
manvolnum></
citerefentry>
<
para><
function>sd_journal_open()</
function>,
<
function>sd_journal_close()</
function>,
<
literal>SD_JOURNAL_LOCAL_ONLY</
literal>,
<
literal>SD_JOURNAL_RUNTIME_ONLY</
literal>,
<
literal>SD_JOURNAL_SYSTEM_ONLY</
literal> were added
<
para><
function>sd_journal_open_directory()</
function>
was added in systemd-187.</
para>
<
para><
literal>SD_JOURNAL_SYSTEM</
literal>,
<
literal>SD_JOURNAL_CURRENT_USER</
literal>,
and <
function>sd_journal_open_files()</
function>
were added in systemd-205.
<
literal>SD_JOURNAL_SYSTEM_ONLY</
literal>
<
citerefentry><
refentrytitle>systemd</
refentrytitle><
manvolnum>1</
manvolnum></
citerefentry>,
<
citerefentry><
refentrytitle>sd-journal</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>,
<
citerefentry><
refentrytitle>sd_journal_next</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>,
<
citerefentry><
refentrytitle>sd_journal_get_data</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>