chiark / gitweb /
man: document sd_print() and friends
[elogind.git] / man / sd_journal_print.xml
1 <?xml version='1.0'?> <!--*-nxml-*-->
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3         "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4
5 <!--
6   This file is part of systemd.
7
8   Copyright 2012 Lennart Poettering
9
10   systemd is free software; you can redistribute it and/or modify it
11   under the terms of the GNU Lesser General Public License as published by
12   the Free Software Foundation; either version 2.1 of the License, or
13   (at your option) any later version.
14
15   systemd is distributed in the hope that it will be useful, but
16   WITHOUT ANY WARRANTY; without even the implied warranty of
17   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18   Lesser General Public License for more details.
19
20   You should have received a copy of the GNU Lesser General Public License
21   along with systemd; If not, see <http://www.gnu.org/licenses/>.
22 -->
23
24 <refentry id="sd_journal_print">
25
26         <refentryinfo>
27                 <title>sd_journal_print</title>
28                 <productname>systemd</productname>
29
30                 <authorgroup>
31                         <author>
32                                 <contrib>Developer</contrib>
33                                 <firstname>Lennart</firstname>
34                                 <surname>Poettering</surname>
35                                 <email>lennart@poettering.net</email>
36                         </author>
37                 </authorgroup>
38         </refentryinfo>
39
40         <refmeta>
41                 <refentrytitle>sd_journal_print</refentrytitle>
42                 <manvolnum>3</manvolnum>
43         </refmeta>
44
45         <refnamediv>
46                 <refname>sd_journal_print</refname>
47                 <refname>sd_journal_printv</refname>
48                 <refname>sd_journal_send</refname>
49                 <refname>sd_journal_sendv</refname>
50                 <refpurpose>Submit log entries to the journal</refpurpose>
51         </refnamediv>
52
53         <refsynopsisdiv>
54                 <funcsynopsis>
55                         <funcsynopsisinfo>#include &lt;systemd/sd-journal.h&gt;</funcsynopsisinfo>
56
57                         <funcprototype>
58                                 <funcdef>int <function>sd_journal_print</function></funcdef>
59                                 <paramdef>int <parameter>priority</parameter></paramdef>
60                                 <paramdef>const char* <parameter>format</parameter></paramdef>
61                                 <paramdef>...</paramdef>
62                         </funcprototype>
63
64                         <funcprototype>
65                                 <funcdef>int <function>sd_journal_printv</function></funcdef>
66                                 <paramdef>int <parameter>priority</parameter></paramdef>
67                                 <paramdef>const char* <parameter>format</parameter></paramdef>
68                                 <paramdef>va_list <parameter>ap</parameter></paramdef>
69                         </funcprototype>
70
71                         <funcprototype>
72                                 <funcdef>int <function>sd_journal_send</function></funcdef>
73                                 <paramdef>const char* <parameter>format</parameter></paramdef>
74                                 <paramdef>...</paramdef>
75                         </funcprototype>
76
77                         <funcprototype>
78                                 <funcdef>int <function>sd_journal_sendv</function></funcdef>
79                                 <paramdef>const struct iovec *<parameter>iov</parameter></paramdef>
80                                 <paramdef>int <parameter>n</parameter></paramdef>
81                         </funcprototype>
82
83                 </funcsynopsis>
84         </refsynopsisdiv>
85
86         <refsect1>
87                 <title>Description</title>
88
89                 <para><function>sd_journal_print()</function> may be
90                 used to submit simple, plain text log entries to the
91                 system journal. The first argument is a priority
92                 value. This is followed by a format string and its
93                 parameters, similar to
94                 <citerefentry><refentrytitle>printf</refentrytitle><manvolnum>3</manvolnum></citerefentry>
95                 or
96                 <citerefentry><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>. The
97                 priority value is one of
98                 <literal>LOG_EMERG</literal>,
99                 <literal>LOG_ALERT</literal>,
100                 <literal>LOG_CRIT</literal>,
101                 <literal>LOG_ERR</literal>,
102                 <literal>LOG_WARNING</literal>,
103                 <literal>LOG_NOTICE</literal>,
104                 <literal>LOG_INFO</literal>,
105                 <literal>LOG_DEBUG</literal>, as defined in
106                 <filename>syslog.h</filename>, see
107                 <citerefentry><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>
108                 for details. It is recommended to use this call to
109                 submit log messages in the application locale or system
110                 locale and in UTF-8 format, but no such restrictions
111                 are enforced.</para>
112
113                 <para><function>sd_journal_printv()</function> is
114                 similar to <function>sd_journal_print()</function> but
115                 takes a variable argument list encapsulated in an
116                 object of type <literal>va_list</literal> (see
117                 <citerefentry><refentrytitle>stdarg</refentrytitle><manvolnum>3</manvolnum></citerefentry>
118                 for more information) instead of the format string. It
119                 is otherwise equivalent in behaviour.</para>
120
121                 <para><function>sd_journal_send()</function> may be
122                 used to submit structured log entries to the system
123                 journal. It takes a series of format strings, each
124                 immediately followed by their associated parameters,
125                 terminated by a NULL. The strings passed should be of
126                 the format <literal>VARIABLE=value</literal>. The
127                 variable name must be in uppercase and consist only
128                 of characters, numbers and underscores, and may not
129                 begin with an underscore. The value can be of any size
130                 and format. It is highly recommended to submit
131                 text strings formatted in the UTF-8 character encoding
132                 only, and submit binary fields only when formatting in
133                 UTf-8 strings is not sensible. A number of well known
134                 fields are defined, see
135                 <citerefentry><refentrytitle>systemd.journal-fields</refentrytitle><manvolnum>7</manvolnum></citerefentry>
136                 for details, but additional application defined fields
137                 may be used.</para>
138
139                 <para><function>sd_journal_sendv()</function> is
140                 similar to <function>sd_journal_send()</function> but
141                 takes an array of <literal>struct iovec</literal> (as
142                 defined in <filename>uio.h</filename>, see
143                 <citerefentry><refentrytitle>readv</refentrytitle><manvolnum>3</manvolnum></citerefentry>
144                 for details) instead of the format string. Each
145                 structure should reference one field of the entry to
146                 submit. The second argument specifies the number of
147                 structures in the
148                 array. <function>sd_journal_sendv()</function> is
149                 particularly useful to submit binary objects to the
150                 journal where that is necessary.</para>
151
152                 <para>Note that <function>sd_journal_send()</function>
153                 is a wapper around
154                 <function>sd_journal_sendv()</function> to make it
155                 easier to use when only text strings shall be
156                 submitted. Also, the following two calls are
157                 mostly equivalent:</para>
158
159                 <programlisting>sd_journal_print(LOG_INFO, "Hello World, this is PID %lu!", (unsigned long) getpid());
160
161 sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(),
162                 "PRIORITY=%i", LOG_INFO,
163                 NULL);</programlisting>
164
165                 <para>Note that these calls implicitly add fields for
166                 the source file, function name and code line where
167                 invoked. This is implemented with macros. If this is
168                 not desired it can be turned off by defining
169                 SD_JOURNAL_SUPPRESS_LOCATION before including
170                 <filename>sd-journal.h</filename>.</para>
171         </refsect1>
172
173         <refsect1>
174                 <title>Return Value</title>
175
176                 <para>The four calls return 0 on success or a
177                 negative errno-style error code.</para>
178         </refsect1>
179
180         <refsect1>
181                 <title>Notes</title>
182
183                 <para>The <function>sd_journal_print()</function>,
184                 <function>sd_journal_printv()</function>,
185                 <function>sd_journal_send()</function> and
186                 <function>sd_journal_sendv()</function> interfaces
187                 are available as shared library, which can be compiled
188                 and linked to with the
189                 <literal>libsystemd-journal</literal>
190                 <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
191                 file.</para>
192         </refsect1>
193
194         <refsect1>
195                 <title>See Also</title>
196
197                 <para>
198                         <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
199                         <citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
200                         <citerefentry><refentrytitle>sd_journal_stream_fd</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
201                         <citerefentry><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
202                         <citerefentry><refentrytitle>systemd.journal-fields</refentrytitle><manvolnum>7</manvolnum></citerefentry>
203                 </para>
204         </refsect1>
205
206 </refentry>