1SD_JOURNAL_GET_DATA(3)        sd_journal_get_data       SD_JOURNAL_GET_DATA(3)
2
3
4

NAME

6       sd_journal_get_data, sd_journal_enumerate_data,
7       sd_journal_restart_data, SD_JOURNAL_FOREACH_DATA,
8       sd_journal_set_data_threshold, sd_journal_get_data_threshold - Read
9       data fields from the current journal entry
10

SYNOPSIS

12       #include <systemd/sd-journal.h>
13
14       int sd_journal_get_data(sd_journal *j, const char *field,
15                               const void **data, size_t *length);
16
17       int sd_journal_enumerate_data(sd_journal *j, const void **data,
18                                     size_t *length);
19
20       void sd_journal_restart_data(sd_journal *j);
21
22       SD_JOURNAL_FOREACH_DATA(sd_journal *j, const void *data,
23                               size_t length);
24
25       int sd_journal_set_data_threshold(sd_journal *j, size_t sz);
26
27       int sd_journal_get_data_threshold(sd_journal *j, size_t *sz);
28

DESCRIPTION

30       sd_journal_get_data() gets the data object associated with a specific
31       field from the current journal entry. It takes four arguments: the
32       journal context object, a string with the field name to request, plus a
33       pair of pointers to pointer/size variables where the data object and
34       its size shall be stored in. The field name should be an entry field
35       name. Well-known field names are listed in systemd.journal-fields(7).
36       The returned data is in a read-only memory map and is only valid until
37       the next invocation of sd_journal_get_data() or
38       sd_journal_enumerate_data(), or the read pointer is altered. Note that
39       the data returned will be prefixed with the field name and '='. Also
40       note that, by default, data fields larger than 64K might get truncated
41       to 64K. This threshold may be changed and turned off with
42       sd_journal_set_data_threshold() (see below).
43
44       sd_journal_enumerate_data() may be used to iterate through all fields
45       of the current entry. On each invocation the data for the next field is
46       returned. The order of these fields is not defined. The data returned
47       is in the same format as with sd_journal_get_data() and also follows
48       the same life-time semantics.
49
50       sd_journal_restart_data() resets the data enumeration index to the
51       beginning of the entry. The next invocation of
52       sd_journal_enumerate_data() will return the first field of the entry
53       again.
54
55       Note that the SD_JOURNAL_FOREACH_DATA() macro may be used as a handy
56       wrapper around sd_journal_restart_data() and
57       sd_journal_enumerate_data().
58
59       Note that these functions will not work before sd_journal_next(3) (or
60       related call) has been called at least once, in order to position the
61       read pointer at a valid entry.
62
63       sd_journal_set_data_threshold() may be used to change the data field
64       size threshold for data returned by sd_journal_get_data(),
65       sd_journal_enumerate_data() and sd_journal_enumerate_unique(). This
66       threshold is a hint only: it indicates that the client program is
67       interested only in the initial parts of the data fields, up to the
68       threshold in size — but the library might still return larger data
69       objects. That means applications should not rely exclusively on this
70       setting to limit the size of the data fields returned, but need to
71       apply an explicit size limit on the returned data as well. This
72       threshold defaults to 64K by default. To retrieve the complete data
73       fields this threshold should be turned off by setting it to 0, so that
74       the library always returns the complete data objects. It is recommended
75       to set this threshold as low as possible since this relieves the
76       library from having to decompress large compressed data objects in
77       full.
78
79       sd_journal_get_data_threshold() returns the currently configured data
80       field size threshold.
81

RETURN VALUE

83       sd_journal_get_data() returns 0 on success or a negative errno-style
84       error code. If the current entry does not include the specified field,
85       -ENOENT is returned. If sd_journal_next(3) has not been called at least
86       once, -EADDRNOTAVAIL is returned.  sd_journal_enumerate_data() returns
87       a positive integer if the next field has been read, 0 when no more
88       fields are known, or a negative errno-style error code.
89       sd_journal_restart_data() returns nothing.
90       sd_journal_set_data_threshold() and sd_journal_get_threshold() return 0
91       on success or a negative errno-style error code.
92

NOTES

94       These APIs are implemented as a shared library, which can be compiled
95       and linked to with the libsystemd pkg-config(1) file.
96

EXAMPLES

98       See sd_journal_next(3) for a complete example how to use
99       sd_journal_get_data().
100
101       Use the SD_JOURNAL_FOREACH_DATA macro to iterate through all fields of
102       the current journal entry:
103
104           ...
105           int print_fields(sd_journal *j) {
106             const void *data;
107             size_t length;
108             SD_JOURNAL_FOREACH_DATA(j, data, length)
109               printf("%.*s\n", (int) length, data);
110           }
111           ...
112

SEE ALSO

114       systemd(1), systemd.journal-fields(7), sd-journal(3),
115       sd_journal_open(3), sd_journal_next(3),
116       sd_journal_get_realtime_usec(3), sd_journal_query_unique(3)
117
118
119
120systemd 239                                             SD_JOURNAL_GET_DATA(3)
Impressum