netatalk  4.4.0
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
logger.h
Go to the documentation of this file.
1#ifndef _ATALK_LOGGER_H
2#define _ATALK_LOGGER_H 1
3
4#ifdef HAVE_CONFIG_H
5#include "config.h"
6#endif
7
8#include <limits.h>
9#include <stdbool.h>
10#include <stdio.h>
11
12/* logger is used by pam modules */
13#ifndef UAM_MODULE_EXPORT
14#define UAM_MODULE_EXPORT
15#endif
16
31
47
48
49/* Display Option flags
50 * Redefine these so they don't interfere with syslog
51 * These can be used in standard logging too */
52#define logoption_nsrcinfo 0x04
53/* the following do not work anymore, they're only provided in order to not
54 * break existing source code */
55#define logoption_pid 0x01
56#define logoption_cons 0x02
57#define logoption_ndelay 0x08
58#define logoption_perror 0x20
59#define logoption_nfile 0x40
60#define logoption_nline 0x80
61
62/* Facility codes
63 * Redefine these so they don't interfere with syslog */
64#define logfacility_user (1<<3)
65#define logfacility_mail (2<<3)
66#define logfacility_daemon (3<<3)
67#define logfacility_auth (4<<3)
68#define logfacility_syslog (5<<3)
69#define logfacility_lpr (6<<3)
70#define logfacility_authpriv (10<<3)
71#define logfacility_ftp (11<<3)
72
73/* =========================================================================
74 Structure definitions
75 */
76
77/* Main log config */
86
87/* This stores the config and options for one filelog type (e.g. logger, afpd etc.) */
88typedef struct {
89 bool set;
91 bool syslog;
92 int fd;
97
98
99/* =========================================================================
100 Global variables
101 */
102
103/* Make config accessible for LOG macro */
105
108
109/* =========================================================================
110 Global function decarations
111 */
112
113void setuplog(const char *loglevel, const char *logfile,
114 const bool log_us_timestamp);
115void set_processname(const char *processname);
116
118void syslog_setup(int loglevel, enum logtypes logtype, int display_options,
119 int facility);
120
123 enum logtypes logtype, const char *file, const bool log_us_timestamp, int line,
124 char *message, ...);
125
126/*
127 * How to write a LOG macro:
128 * http://c-faq.com/cpp/debugmacs.html
129 *
130 * We choose the verbose form in favor of the obfuscated ones, its easier
131 * to parse for human beings and facilitates expanding the macro for
132 * inline checks for debug levels.
133 */
134
135#define LOG_MAX log_info
136
137#ifdef NO_DEBUG
138
139#define LOG(log_level, type, ...) \
140 do { \
141 if (log_level <= LOG_MAX) \
142 if (log_level <= type_configs[type].level) \
143 make_log_entry((log_level), (type), __FILE__, type_configs[type].timestamp_us, __LINE__, __VA_ARGS__); \
144 } while(0)
145
146#else /* ! NO_DEBUG */
147
148#define LOG(log_level, type, ...) \
149 do { \
150 if (log_level <= type_configs[type].level) \
151 make_log_entry((log_level), (type), __FILE__, type_configs[type].timestamp_us, __LINE__, __VA_ARGS__); \
152 } while(0)
153
154#endif /* NO_DEBUG */
155
156#endif /* _ATALK_LOGGER_H */
void set_processname(const char *processname)
Definition logger.c:449
UAM_MODULE_EXPORT logtype_conf_t type_configs[logtype_end_of_list_marker]
Definition logger.c:87
log_config_t log_config
Definition logger.c:73
#define UAM_MODULE_EXPORT
Definition logger.h:14
void syslog_setup(int loglevel, enum logtypes logtype, int display_options, int facility)
Definition logger.c:352
logtypes
Definition logger.h:33
@ logtype_atalkd
Definition logger.h:39
@ logtype_uams
Definition logger.h:41
@ logtype_cnid
Definition logger.h:36
@ logtype_default
Definition logger.h:34
@ logtype_ad
Definition logger.h:43
@ logtype_end_of_list_marker
Definition logger.h:45
@ logtype_dsi
Definition logger.h:38
@ logtype_logger
Definition logger.h:35
@ logtype_papd
Definition logger.h:40
@ logtype_sl
Definition logger.h:44
@ logtype_fce
Definition logger.h:42
@ logtype_afpd
Definition logger.h:37
void setuplog(const char *loglevel, const char *logfile, const bool log_us_timestamp)
Definition logger.c:553
UAM_MODULE_EXPORT void make_log_entry(enum loglevels loglevel, enum logtypes logtype, const char *file, const bool log_us_timestamp, int line, char *message,...)
Definition logger.c:460
loglevels
Definition logger.h:17
@ log_none
Definition logger.h:18
@ log_maxdebug
Definition logger.h:29
@ log_debug9
Definition logger.h:28
@ log_debug7
Definition logger.h:26
@ log_debug8
Definition logger.h:27
@ log_warning
Definition logger.h:21
@ log_error
Definition logger.h:20
@ log_debug6
Definition logger.h:25
@ log_info
Definition logger.h:23
@ log_severe
Definition logger.h:19
@ log_debug
Definition logger.h:24
@ log_note
Definition logger.h:22
logtype
Definition nad.h:40
Definition logger.h:78
char processname[16]
Definition logger.h:82
bool inited
Definition logger.h:79
int syslog_facility
Definition logger.h:83
bool console
Definition logger.h:81
int syslog_display_options
Definition logger.h:84
bool syslog_opened
Definition logger.h:80
Definition logger.h:88
bool syslog
Definition logger.h:91
enum loglevels level
Definition logger.h:93
bool set
Definition logger.h:89
int fd
Definition logger.h:92
bool timestamp_us
Definition logger.h:95
int display_options
Definition logger.h:94