]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/systemd/sd-journal.h
tree-wide: sort includes in *.h
[thirdparty/systemd.git] / src / systemd / sd-journal.h
CommitLineData
87d2c1ff
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
6695ed7a
LP
3#ifndef foosdjournalhfoo
4#define foosdjournalhfoo
87d2c1ff
LP
5
6/***
7 This file is part of systemd.
8
9 Copyright 2011 Lennart Poettering
10
11 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
12 under the terms of the GNU Lesser General Public License as published by
13 the Free Software Foundation; either version 2.1 of the License, or
87d2c1ff
LP
14 (at your option) any later version.
15
16 systemd is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 19 Lesser General Public License for more details.
87d2c1ff 20
5430f7f2 21 You should have received a copy of the GNU Lesser General Public License
87d2c1ff
LP
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
23***/
24
25#include <inttypes.h>
7f3e6257 26#include <stdarg.h>
71d35b6b 27#include <sys/types.h>
7f3e6257 28#include <sys/uio.h>
b070e7f3 29#include <syslog.h>
87d2c1ff 30
aacf3b48 31#include "sd-id128.h"
71d35b6b 32
aacf3b48 33#include "_sd-common.h"
de190aef 34
cb07866b
LP
35/* Journal APIs. See sd-journal(3) for more information. */
36
0095c454
LP
37_SD_BEGIN_DECLARATIONS;
38
7f3e6257 39/* Write to daemon */
aacf3b48
LP
40int sd_journal_print(int priority, const char *format, ...) _sd_printf_(2, 3);
41int sd_journal_printv(int priority, const char *format, va_list ap) _sd_printf_(2, 0);
42int sd_journal_send(const char *format, ...) _sd_printf_(1, 0) _sd_sentinel_;
7f3e6257 43int sd_journal_sendv(const struct iovec *iov, int n);
18c7ed18 44int sd_journal_perror(const char *message);
7f3e6257 45
49cf4ece 46/* Used by the macros below. You probably don't want to call this directly. */
aacf3b48
LP
47int sd_journal_print_with_location(int priority, const char *file, const char *line, const char *func, const char *format, ...) _sd_printf_(5, 6);
48int sd_journal_printv_with_location(int priority, const char *file, const char *line, const char *func, const char *format, va_list ap) _sd_printf_(5, 0);
49int sd_journal_send_with_location(const char *file, const char *line, const char *func, const char *format, ...) _sd_printf_(4, 0) _sd_sentinel_;
b070e7f3 50int sd_journal_sendv_with_location(const char *file, const char *line, const char *func, const struct iovec *iov, int n);
18c7ed18 51int sd_journal_perror_with_location(const char *file, const char *line, const char *func, const char *message);
b070e7f3
LP
52
53/* implicitly add code location to messages sent, if this is enabled */
54#ifndef SD_JOURNAL_SUPPRESS_LOCATION
55
0095c454
LP
56#define sd_journal_print(priority, ...) sd_journal_print_with_location(priority, "CODE_FILE=" __FILE__, "CODE_LINE=" _SD_STRINGIFY(__LINE__), __func__, __VA_ARGS__)
57#define sd_journal_printv(priority, format, ap) sd_journal_printv_with_location(priority, "CODE_FILE=" __FILE__, "CODE_LINE=" _SD_STRINGIFY(__LINE__), __func__, format, ap)
58#define sd_journal_send(...) sd_journal_send_with_location("CODE_FILE=" __FILE__, "CODE_LINE=" _SD_STRINGIFY(__LINE__), __func__, __VA_ARGS__)
59#define sd_journal_sendv(iovec, n) sd_journal_sendv_with_location("CODE_FILE=" __FILE__, "CODE_LINE=" _SD_STRINGIFY(__LINE__), __func__, iovec, n)
60#define sd_journal_perror(message) sd_journal_perror_with_location("CODE_FILE=" __FILE__, "CODE_LINE=" _SD_STRINGIFY(__LINE__), __func__, message)
b070e7f3
LP
61
62#endif
63
4cd9a9d9 64int sd_journal_stream_fd(const char *identifier, int priority, int level_prefix);
fe652127 65
7f3e6257
LP
66/* Browse journal stream */
67
87d2c1ff
LP
68typedef struct sd_journal sd_journal;
69
3c1668da 70/* Open flags */
cf244689
LP
71enum {
72 SD_JOURNAL_LOCAL_ONLY = 1,
73 SD_JOURNAL_RUNTIME_ONLY = 2,
a688baa8 74 SD_JOURNAL_SYSTEM = 4,
a688baa8 75 SD_JOURNAL_CURRENT_USER = 8,
fd38203a
LP
76
77 SD_JOURNAL_SYSTEM_ONLY = SD_JOURNAL_SYSTEM, /* deprecated name */
cf244689
LP
78};
79
3c1668da
LP
80/* Wakeup event types */
81enum {
82 SD_JOURNAL_NOP,
83 SD_JOURNAL_APPEND,
84 SD_JOURNAL_INVALIDATE
85};
86
cf244689 87int sd_journal_open(sd_journal **ret, int flags);
a963990f 88int sd_journal_open_directory(sd_journal **ret, const char *path, int flags);
5302ebe1 89int sd_journal_open_files(sd_journal **ret, const char **paths, int flags);
b6741478 90int sd_journal_open_container(sd_journal **ret, const char *machine, int flags);
87d2c1ff
LP
91void sd_journal_close(sd_journal *j);
92
93int sd_journal_previous(sd_journal *j);
94int sd_journal_next(sd_journal *j);
95
de190aef
LP
96int sd_journal_previous_skip(sd_journal *j, uint64_t skip);
97int sd_journal_next_skip(sd_journal *j, uint64_t skip);
98
cec736d2 99int sd_journal_get_realtime_usec(sd_journal *j, uint64_t *ret);
de190aef 100int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id128_t *ret_boot_id);
4171a667 101
93b73b06
LP
102int sd_journal_set_data_threshold(sd_journal *j, size_t sz);
103int sd_journal_get_data_threshold(sd_journal *j, size_t *sz);
104
8725d60a
LP
105int sd_journal_get_data(sd_journal *j, const char *field, const void **data, size_t *l);
106int sd_journal_enumerate_data(sd_journal *j, const void **data, size_t *l);
de190aef 107void sd_journal_restart_data(sd_journal *j);
87d2c1ff 108
1cc101f1 109int sd_journal_add_match(sd_journal *j, const void *data, size_t size);
cbdca852 110int sd_journal_add_disjunction(sd_journal *j);
cd34b3c6 111int sd_journal_add_conjunction(sd_journal *j);
cec736d2 112void sd_journal_flush_matches(sd_journal *j);
87d2c1ff
LP
113
114int sd_journal_seek_head(sd_journal *j);
115int sd_journal_seek_tail(sd_journal *j);
de190aef
LP
116int sd_journal_seek_monotonic_usec(sd_journal *j, sd_id128_t boot_id, uint64_t usec);
117int sd_journal_seek_realtime_usec(sd_journal *j, uint64_t usec);
118int sd_journal_seek_cursor(sd_journal *j, const char *cursor);
87d2c1ff 119
3fbf9cbb 120int sd_journal_get_cursor(sd_journal *j, char **cursor);
c6511e85 121int sd_journal_test_cursor(sd_journal *j, const char *cursor);
87d2c1ff 122
08984293
LP
123int sd_journal_get_cutoff_realtime_usec(sd_journal *j, uint64_t *from, uint64_t *to);
124int sd_journal_get_cutoff_monotonic_usec(sd_journal *j, const sd_id128_t boot_id, uint64_t *from, uint64_t *to);
125
a1a03e30
LP
126int sd_journal_get_usage(sd_journal *j, uint64_t *bytes);
127
3c1668da
LP
128int sd_journal_query_unique(sd_journal *j, const char *field);
129int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_t *l);
130void sd_journal_restart_unique(sd_journal *j);
1cc101f1 131
50f20cfd 132int sd_journal_get_fd(sd_journal *j);
ee531d94 133int sd_journal_get_events(sd_journal *j);
39c155ea 134int sd_journal_get_timeout(sd_journal *j, uint64_t *timeout_usec);
50f20cfd 135int sd_journal_process(sd_journal *j);
e02d1cf7 136int sd_journal_wait(sd_journal *j, uint64_t timeout_usec);
39c155ea 137int sd_journal_reliable_fd(sd_journal *j);
1cc101f1 138
d4205751 139int sd_journal_get_catalog(sd_journal *j, char **text);
151b9b96 140int sd_journal_get_catalog_for_message_id(sd_id128_t id, char **text);
d4205751 141
8d1c8bd7 142/* the inverse condition avoids ambiguity of danling 'else' after the macro */
de190aef 143#define SD_JOURNAL_FOREACH(j) \
8d1c8bd7
DH
144 if (sd_journal_seek_head(j) < 0) { } \
145 else while (sd_journal_next(j) > 0)
8725d60a 146
8d1c8bd7 147/* the inverse condition avoids ambiguity of danling 'else' after the macro */
de190aef 148#define SD_JOURNAL_FOREACH_BACKWARDS(j) \
8d1c8bd7
DH
149 if (sd_journal_seek_tail(j) < 0) { } \
150 else while (sd_journal_previous(j) > 0)
3fbf9cbb 151
8725d60a 152#define SD_JOURNAL_FOREACH_DATA(j, data, l) \
de190aef 153 for (sd_journal_restart_data(j); sd_journal_enumerate_data((j), &(data), &(l)) > 0; )
3fbf9cbb 154
3c1668da
LP
155#define SD_JOURNAL_FOREACH_UNIQUE(j, data, l) \
156 for (sd_journal_restart_unique(j); sd_journal_enumerate_unique((j), &(data), &(l)) > 0; )
3fbf9cbb 157
0095c454 158_SD_END_DECLARATIONS;
f9873976 159
87d2c1ff 160#endif