peapod
0.1.0
EAPOL Proxy Daemon
Main Page
Data Structures
Files
File List
Globals
include
log.h
Go to the documentation of this file.
1
/**
2
* @file log.h
3
* @brief Function prototypes for @p log.c, global logging macros.
4
*/
5
#pragma once
6
7
#include <errno.h>
8
#include <syslog.h>
9
10
/**
11
* @name A new log level less severe/more verbose than LOG_DEBUG
12
* The syslog levels range from @p LOG_EMERG to @p LOG_DEBUG (0 to 7).
13
* Messages at this new level aren't even emitted to syslog.
14
* @{
15
*/
16
#define LOG_DEBUGLOW 8
17
/** @} */
18
19
/**
20
* @name Function-like stderr output macros
21
* Usage is like @p printf(3). Used during early program startup to print to
22
* @p stderr, before logging is even fully initialized.
23
* @p ceerr() adds @p strerror(errno) as the last argument,
24
* i.e. @code ceerr("Error %d: %s", errno); @endcode is equivalent to
25
* @code cerr("Error %d: %s", errno, strerror(errno)); @endcode
26
* @{
27
*/
28
#define cerr(...) fprintf(stderr, __VA_ARGS__)
29
#define ceerr(...) cerr(__VA_ARGS__, strerror(errno))
30
/** @} */
31
32
/**
33
* @name Function-like logging macros
34
* Usage is like @p printf(3).
35
* - Names range from @p emerg() for logging with level @p LOG_EMERG to @p debug
36
* for @p LOG_DEBUG in addition to @p debuglow() for our own @p LOG_DEBUGLOW.
37
* - The prefix '@p l' adds file and line number information to the message
38
* (however, those macros were only used during development).
39
* - The prefix '@p e' adds @p strerror(errno) as the last argument, i.e.
40
* @code eerr("Error %d: %s", errno); @endcode is equivalent to
41
* @code err("Error %d: %s", errno, strerror(errno)); @endcode
42
* - The suffix '@p die' also calls @p exit(3) with code @P EXIT_FAILURE.
43
* @{
44
*/
45
#define emerg(...) log_msg(LOG_EMERG, NULL, 0, __VA_ARGS__)
46
#define alert(...) log_msg(LOG_ALERT, NULL, 0, __VA_ARGS__)
47
#define crit(...) log_msg(LOG_CRIT, NULL, 0, __VA_ARGS__)
48
#define err(...) log_msg(LOG_ERR, NULL, 0, __VA_ARGS__)
49
#define warning(...) log_msg(LOG_WARNING, NULL, 0, __VA_ARGS__)
50
#define notice(...) log_msg(LOG_NOTICE, NULL, 0, __VA_ARGS__)
51
#define info(...) log_msg(LOG_INFO, NULL, 0, __VA_ARGS__)
52
#define debug(...) log_msg(LOG_DEBUG, NULL, 0, __VA_ARGS__)
53
#define debuglow(...) log_msg(LOG_DEBUGLOW, NULL, 0, __VA_ARGS__)
54
55
#define lemerg(...) log_msg(LOG_EMERG, __FILE__, __LINE__, __VA_ARGS__)
56
#define lalert(...) log_msg(LOG_ALERT, __FILE__, __LINE__, __VA_ARGS__)
57
#define lcrit(...) log_msg(LOG_CRIT, __FILE__, __LINE__, __VA_ARGS__)
58
#define lerr(...) log_msg(LOG_ERR, __FILE__, __LINE__, __VA_ARGS__)
59
#define lwarning(...) log_msg(LOG_WARNING, __FILE__, __LINE__, __VA_ARGS__)
60
#define lnotice(...) log_msg(LOG_NOTICE, __FILE__, __LINE__, __VA_ARGS__)
61
#define linfo(...) log_msg(LOG_INFO, __FILE__, __LINE__, __VA_ARGS__)
62
#define ldebug(...) log_msg(LOG_DEBUG, __FILE__, __LINE__, __VA_ARGS__)
63
64
#define ecrit(...) crit(__VA_ARGS__, strerror(errno))
65
#define eerr(...) err(__VA_ARGS__, strerror(errno))
66
#define ewarning(...) warning(__VA_ARGS__, strerror(errno))
67
#define einfo(...) info(__VA_ARGS__, strerror(errno))
68
69
#define critdie(...) do { crit(__VA_ARGS__); exit(EXIT_FAILURE); } while (0)
70
71
#define ecritdie(...) do { ecrit(__VA_ARGS__); exit(EXIT_FAILURE); } while (0)
72
/** @} */
73
74
int
log_init
(
void
);
75
int
log_daemonize
(
void
);
76
void
log_msg
(
int
level,
const
char
*file,
int
line,
const
char
*fmt, ...);
log_daemonize
int log_daemonize(void)
Prepare logging when daemonizing.
Definition:
log.c:127
log_msg
void log_msg(int level, const char *file, int line, const char *fmt,...)
Log a message.
Definition:
log.c:167
log_init
int log_init(void)
Initialize logging.
Definition:
log.c:100
Generated by
1.8.11