myMPD
Internal API documentation
Loading...
Searching...
No Matches
log.h
1/*
2 SPDX-License-Identifier: GPL-3.0-or-later
3 myMPD (c) 2018-2025 Juergen Mang <mail@jcgames.de>
4 https://github.com/jcorporation/mympd
5*/
6
7#ifndef MYMPD_LOG_H
8#define MYMPD_LOG_H
9
10#include "dist/sds/sds.h"
11
12#include <stdbool.h>
13#include <syslog.h>
14
15enum log_types {
16 LOG_TO_SYSLOG,
17 LOG_TO_TTY,
18 LOG_TO_SYSTEMD,
19 LOG_TO_STDOUT
20};
21
25#ifdef MYMPD_DEBUG
26 #define MYMPD_LOG_EMERG(...) mympd_log(LOG_EMERG, __FILE__, __LINE__, __VA_ARGS__)
27 #define MYMPD_LOG_ALERT(...) mympd_log(LOG_ALERT, __FILE__, __LINE__, __VA_ARGS__)
28 #define MYMPD_LOG_CRIT(...) mympd_log(LOG_CRIT, __FILE__, __LINE__, __VA_ARGS__)
29 #define MYMPD_LOG_ERROR(...) mympd_log(LOG_ERR, __FILE__, __LINE__, __VA_ARGS__)
30 #define MYMPD_LOG_WARN(...) mympd_log(LOG_WARNING, __FILE__, __LINE__, __VA_ARGS__)
31 #define MYMPD_LOG_NOTICE(...) mympd_log(LOG_NOTICE, __FILE__, __LINE__, __VA_ARGS__)
32 #define MYMPD_LOG_INFO(...) mympd_log(LOG_INFO, __FILE__, __LINE__, __VA_ARGS__)
33 #define MYMPD_LOG_DEBUG(...) mympd_log(LOG_DEBUG, __FILE__, __LINE__, __VA_ARGS__)
34 #define MYMPD_LOG_ERRNO(PART, ERRNUM) mympd_log_errno(__FILE__, __LINE__, PART, ERRNUM)
35#else
39 #define MYMPD_LOG_EMERG(...) mympd_log(LOG_EMERG, "", __LINE__, __VA_ARGS__)
40 #define MYMPD_LOG_ALERT(...) mympd_log(LOG_ALERT, "", __LINE__, __VA_ARGS__)
41 #define MYMPD_LOG_CRIT(...) mympd_log(LOG_CRIT, "", __LINE__, __VA_ARGS__)
42 #define MYMPD_LOG_ERROR(...) mympd_log(LOG_ERR, "", __LINE__, __VA_ARGS__)
43 #define MYMPD_LOG_WARN(...) mympd_log(LOG_WARNING, "", __LINE__, __VA_ARGS__)
44 #define MYMPD_LOG_NOTICE(...) mympd_log(LOG_NOTICE, "", __LINE__, __VA_ARGS__)
45 #define MYMPD_LOG_INFO(...) mympd_log(LOG_INFO, "", __LINE__, __VA_ARGS__)
46 #define MYMPD_LOG_DEBUG(...) mympd_log(LOG_DEBUG, "", __LINE__, __VA_ARGS__)
47 #define MYMPD_LOG_ERRNO(PART, ERRNUM) mympd_log_errno("", __LINE__, PART, ERRNUM)
48#endif
49
53extern _Atomic int loglevel;
54extern enum log_types log_type;
55
56_Thread_local extern sds thread_logname;
57_Thread_local extern sds thread_logline;
58
59const char *get_loglevel_name(int level);
60void set_loglevel(int level);
61void log_init(void);
62
63void mympd_log_errno(const char *file, int line, const char *partition, int errnum);
64void mympd_log(int level, const char *file, int line, const char *partition, const char *fmt, ...)
65 __attribute__ ((format (printf, 5, 6)));
66
67#endif
enum log_types log_type
Definition log.c:40
void log_init(void)
Definition log.c:102
_Thread_local sds thread_logname
Definition log.c:29
void mympd_log_errno(const char *file, int line, const char *partition, int errnum)
Definition log.c:128
void set_loglevel(int level)
Definition log.c:88
const char * get_loglevel_name(int level)
Definition log.c:75
void mympd_log(int level, const char *file, int line, const char *partition, const char *fmt,...)
Definition log.c:151
_Atomic int loglevel
Definition log.c:35