]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/shared/log.h
shared: in code that might get called from suid programs use __secure_getenv() rather...
[thirdparty/systemd.git] / src / shared / log.h
CommitLineData
03467c88 1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
5899f3b7 2
c2f1db8f 3#pragma once
5899f3b7 4
a7334b09
LP
5/***
6 This file is part of systemd.
7
8 Copyright 2010 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
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
a7334b09
LP
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
5430f7f2 18 Lesser General Public License for more details.
a7334b09 19
5430f7f2 20 You should have received a copy of the GNU Lesser General Public License
a7334b09
LP
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22***/
23
5899f3b7 24#include <syslog.h>
bbe63281 25#include <stdbool.h>
17a94911 26#include <stdarg.h>
0d0f0c50 27#include <errno.h>
5899f3b7
LP
28
29#include "macro.h"
30
16801e90
LP
31typedef enum LogTarget{
32 LOG_TARGET_CONSOLE,
16801e90 33 LOG_TARGET_KMSG,
5ba081b0
LP
34 LOG_TARGET_JOURNAL,
35 LOG_TARGET_JOURNAL_OR_KMSG,
843d2643
LP
36 LOG_TARGET_SYSLOG,
37 LOG_TARGET_SYSLOG_OR_KMSG,
5ba081b0 38 LOG_TARGET_AUTO, /* console if stderr is tty, JOURNAL_OR_KMSG otherwise */
a6903061 39 LOG_TARGET_SAFE, /* console if stderr is tty, KMSG otherwise */
9fae33d2 40 LOG_TARGET_NULL,
16801e90
LP
41 _LOG_TARGET_MAX,
42 _LOG_TARGET_INVALID = -1
43} LogTarget;
44
45void log_set_target(LogTarget target);
46void log_set_max_level(int level);
3eff4208 47void log_set_facility(int facility);
16801e90 48
34f0e866
LP
49int log_set_target_from_string(const char *e);
50int log_set_max_level_from_string(const char *e);
51
bbe63281
LP
52void log_show_color(bool b);
53void log_show_location(bool b);
54
55int log_show_color_from_string(const char *e);
56int log_show_location_from_string(const char *e);
57
1adf1049
LP
58LogTarget log_get_target(void);
59int log_get_max_level(void);
60
843d2643 61int log_open(void);
871e5809 62void log_close(void);
4d8a7798 63void log_forget_fds(void);
843d2643 64
16801e90 65void log_close_syslog(void);
5ba081b0 66void log_close_journal(void);
843d2643
LP
67void log_close_kmsg(void);
68void log_close_console(void);
16801e90 69
34f0e866
LP
70void log_parse_environment(void);
71
843d2643 72int log_meta(
5899f3b7
LP
73 int level,
74 const char*file,
75 int line,
76 const char *func,
93a46b0b 77 const char *format, ...) _printf_attr_(5,6);
5899f3b7 78
17a94911
LP
79int log_metav(
80 int level,
81 const char*file,
82 int line,
83 const char *func,
84 const char *format,
85 va_list ap);
86
b7f33638
MS
87_noreturn_ void log_assert_failed(const char *text, const char *file, int line, const char *func);
88_noreturn_ void log_assert_failed_unreachable(const char *text, const char *file, int line, const char *func);
185986c6 89
2149e37c
LP
90/* This modifies the buffer passed! */
91int log_dump_internal(
92 int level,
93 const char*file,
94 int line,
95 const char *func,
96 char *buffer);
97
b070e7f3 98#define log_full(level, ...) log_meta(level, __FILE__, __LINE__, __func__, __VA_ARGS__)
92abbefb 99
5899f3b7
LP
100#define log_debug(...) log_meta(LOG_DEBUG, __FILE__, __LINE__, __func__, __VA_ARGS__)
101#define log_info(...) log_meta(LOG_INFO, __FILE__, __LINE__, __func__, __VA_ARGS__)
102#define log_notice(...) log_meta(LOG_NOTICE, __FILE__, __LINE__, __func__, __VA_ARGS__)
103#define log_warning(...) log_meta(LOG_WARNING, __FILE__, __LINE__, __func__, __VA_ARGS__)
104#define log_error(...) log_meta(LOG_ERR, __FILE__, __LINE__, __func__, __VA_ARGS__)
105
6dc1e7e0
MS
106int __log_oom(const char *file, int line, const char *func);
107#define log_oom() __log_oom(__FILE__, __LINE__, __func__)
0d0f0c50 108
2149e37c
LP
109/* This modifies the buffer passed! */
110#define log_dump(level, buffer) log_dump_internal(level, __FILE__, __LINE__, __func__, buffer)
111
34f0e866
LP
112const char *log_target_to_string(LogTarget target);
113LogTarget log_target_from_string(const char *s);