myMPD
Internal API documentation
Loading...
Searching...
No Matches
log.h
1/*
2 SPDX-License-Identifier: GPL-3.0-or-later
3 myMPD (c) 2018-2026 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 LOG_WITH_TS
21};
22
26#ifdef MYMPD_DEBUG
27 #define MYMPD_LOG_EMERG(...) mympd_log(LOG_EMERG, __FILE__, __LINE__, __VA_ARGS__)
28 #define MYMPD_LOG_ALERT(...) mympd_log(LOG_ALERT, __FILE__, __LINE__, __VA_ARGS__)
29 #define MYMPD_LOG_CRIT(...) mympd_log(LOG_CRIT, __FILE__, __LINE__, __VA_ARGS__)
30 #define MYMPD_LOG_ERROR(...) mympd_log(LOG_ERR, __FILE__, __LINE__, __VA_ARGS__)
31 #define MYMPD_LOG_WARN(...) mympd_log(LOG_WARNING, __FILE__, __LINE__, __VA_ARGS__)
32 #define MYMPD_LOG_NOTICE(...) mympd_log(LOG_NOTICE, __FILE__, __LINE__, __VA_ARGS__)
33 #define MYMPD_LOG_INFO(...) mympd_log(LOG_INFO, __FILE__, __LINE__, __VA_ARGS__)
34 #define MYMPD_LOG_DEBUG(...) mympd_log(LOG_DEBUG, __FILE__, __LINE__, __VA_ARGS__)
35 #define MYMPD_LOG_ERRNO(PART, ERRNUM) mympd_log_errno(__FILE__, __LINE__, PART, ERRNUM)
36#else
40 #define MYMPD_LOG_EMERG(...) mympd_log(LOG_EMERG, "", __LINE__, __VA_ARGS__)
41 #define MYMPD_LOG_ALERT(...) mympd_log(LOG_ALERT, "", __LINE__, __VA_ARGS__)
42 #define MYMPD_LOG_CRIT(...) mympd_log(LOG_CRIT, "", __LINE__, __VA_ARGS__)
43 #define MYMPD_LOG_ERROR(...) mympd_log(LOG_ERR, "", __LINE__, __VA_ARGS__)
44 #define MYMPD_LOG_WARN(...) mympd_log(LOG_WARNING, "", __LINE__, __VA_ARGS__)
45 #define MYMPD_LOG_NOTICE(...) mympd_log(LOG_NOTICE, "", __LINE__, __VA_ARGS__)
46 #define MYMPD_LOG_INFO(...) mympd_log(LOG_INFO, "", __LINE__, __VA_ARGS__)
47 #define MYMPD_LOG_DEBUG(...) mympd_log(LOG_DEBUG, "", __LINE__, __VA_ARGS__)
48 #define MYMPD_LOG_ERRNO(PART, ERRNUM) mympd_log_errno("", __LINE__, PART, ERRNUM)
49#endif
50
54extern _Atomic int loglevel;
55extern enum log_types log_type;
56
57_Thread_local extern sds thread_logname;
58_Thread_local extern sds thread_logline;
59
60const char *get_loglevel_name(int level);
61void set_loglevel(int level);
62void log_init(void);
63
64void mympd_log_errno(const char *file, int line, const char *partition, int errnum);
65void mympd_log(int level, const char *file, int line, const char *partition, const char *fmt, ...)
66 __attribute__ ((format (printf, 5, 6)));
67
68#endif
enum log_types log_type
Type of logging system.
Definition log.c:34
void log_init(void)
Definition log.c:96
_Thread_local sds thread_logname
Thread name.
Definition log.c:26
void mympd_log_errno(const char *file, int line, const char *partition, int errnum)
Definition log.c:127
void set_loglevel(int level)
Definition log.c:82
_Thread_local sds thread_logline
Thread specific log buffer.
Definition log.c:27
const char * get_loglevel_name(int level)
Definition log.c:69
void mympd_log(int level, const char *file, int line, const char *partition, const char *fmt,...)
Definition log.c:150
_Atomic int loglevel
Loglevel.
Definition log.c:33