netatalk  4.4.0dev
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
32/* this is the enum specifying all availiable logtypes */
47
48
49/* Display Option flags. */
50/* redefine these so they can don't interfeer with syslog */
51/* these can be used in standard logging too */
52#define logoption_nsrcinfo 0x04 /* don't log source info */
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 /* log the pid with each message */
56#define logoption_cons 0x02 /* log on the console if error logging */
57#define logoption_ndelay 0x08 /* don't delay open */
58#define logoption_perror 0x20 /* log to stderr as well */
59#define logoption_nfile 0x40 /* ignore the file that called the log */
60#define logoption_nline 0x80 /* ignore the line that called the log*/
61
62/* facility codes */
63/* redefine these so they can don't interfeer with syslog */
64#define logfacility_user (1<<3) /* random user-level messages */
65#define logfacility_mail (2<<3) /* mail system */
66#define logfacility_daemon (3<<3) /* system daemons */
67#define logfacility_auth (4<<3) /* security/authorization messages */
68#define logfacility_syslog (5<<3) /* messages generated by syslogd */
69#define logfacility_lpr (6<<3) /* line printer subsystem */
70#define logfacility_authpriv (10<<3) /* security/auth messages (private) */
71#define logfacility_ftp (11<<3) /* ftp daemon */
72
73/* =========================================================================
74 Structure definitions
75 */
76
77/* Main log config */
78typedef struct {
79 /* file log config initialized ? */
80 bool inited;
81 /* syslog opened ? */
83 /* if logging to console from a cli util */
84 bool console;
85 char processname[16];
89
90/* This stores the config and options for one filelog type (e.g. logger, afpd etc.) */
91typedef struct {
92 /* set individually ? yes: changing default
93 * doesnt change it. no: it changes it. */
94 bool set;
95 /* This type logs to syslog */
96 bool syslog;
97 /* logfiles fd */
98 int fd;
99 /* Log Level to put in this file */
102 /* Log time stamps in us instead of s */
105
106
107/* =========================================================================
108 Global variables
109 */
110
111/* Make config accessible for LOG macro */
113
116
117/* =========================================================================
118 Global function decarations
119 */
120
121void setuplog(const char *loglevel, const char *logfile,
122 const bool log_us_timestamp);
123void set_processname(const char *processname);
124
125/* Setup the level and type of log that will be logged to syslog. */
126void syslog_setup(int loglevel, enum logtypes logtype, int display_options,
127 int facility);
128
129/* LOG macro func no.1: log the message to file */
131 enum logtypes logtype, const char *file, const bool log_us_timestamp, int line,
132 char *message, ...);
133
134/*
135 * How to write a LOG macro:
136 * http://c-faq.com/cpp/debugmacs.html
137 *
138 * We choose the verbose form in favor of the obfuscated ones, its easier
139 * to parse for human beings and facilitates expanding the macro for
140 * inline checks for debug levels.
141 */
142
143#define LOG_MAX log_info
144
145#ifdef NO_DEBUG
146
147#define LOG(log_level, type, ...) \
148 do { \
149 if (log_level <= LOG_MAX) \
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#else /* ! NO_DEBUG */
155
156#define LOG(log_level, type, ...) \
157 do { \
158 if (log_level <= type_configs[type].level) \
159 make_log_entry((log_level), (type), __FILE__, type_configs[type].timestamp_us, __LINE__, __VA_ARGS__); \
160 } while(0)
161
162#endif /* NO_DEBUG */
163
164#endif /* _ATALK_LOGGER_H */
void set_processname(const char *processname)
Definition logger.c:443
UAM_MODULE_EXPORT logtype_conf_t type_configs[logtype_end_of_list_marker]
Definition logger.c:84
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:349
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:547
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:454
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:85
bool inited
Definition logger.h:80
int syslog_facility
Definition logger.h:86
bool console
Definition logger.h:84
int syslog_display_options
Definition logger.h:87
bool syslog_opened
Definition logger.h:82
Definition logger.h:91
bool syslog
Definition logger.h:96
enum loglevels level
Definition logger.h:100
bool set
Definition logger.h:94
int fd
Definition logger.h:98
bool timestamp_us
Definition logger.h:103
int display_options
Definition logger.h:101