27 RCSIDH(log_h,
"$Id: c9a07594a86c959d99248e1ad74d6b5a68cb8d3a $")
76 #ifdef HAVE_FOPENCOOKIE
114 char const *fmt,
size_t indent,
char const *error)
139 #define AUTH(fmt, ...) radlog(L_AUTH, fmt, ## __VA_ARGS__)
140 #define ACCT(fmt, ...) radlog(L_ACCT, fmt, ## __VA_ARGS__)
141 #define PROXY(fmt, ...) radlog(L_PROXY, fmt, ## __VA_ARGS__)
143 #define INFO(fmt, ...) radlog(L_INFO, fmt, ## __VA_ARGS__)
144 #define WARN(fmt, ...) radlog(L_WARN, fmt, ## __VA_ARGS__)
145 #define ERROR(fmt, ...) radlog(L_ERR, fmt, ## __VA_ARGS__)
169 #define DEBUG_ENABLED debug_enabled(L_DBG, L_DBG_LVL_1)
170 #define DEBUG_ENABLED2 debug_enabled(L_DBG, L_DBG_LVL_2)
171 #define DEBUG_ENABLED3 debug_enabled(L_DBG, L_DBG_LVL_3)
172 #define DEBUG_ENABLED4 debug_enabled(L_DBG, L_DBG_LVL_MAX)
174 #define _SL(_l, _p, _f, ...) if (rad_debug_lvl >= _p) radlog(_l, _f, ## __VA_ARGS__)
175 #define DEBUG(fmt, ...) _SL(L_DBG, L_DBG_LVL_1, fmt, ## __VA_ARGS__)
176 #define DEBUG2(fmt, ...) _SL(L_DBG, L_DBG_LVL_2, fmt, ## __VA_ARGS__)
177 #define DEBUG3(fmt, ...) _SL(L_DBG, L_DBG_LVL_3, fmt, ## __VA_ARGS__)
178 #define DEBUG4(fmt, ...) _SL(L_DBG, L_DBG_LVL_MAX, fmt, ## __VA_ARGS__)
202 #define RAUTH(fmt, ...) radlog_request(L_AUTH, L_DBG_LVL_OFF, request, fmt, ## __VA_ARGS__)
203 #define RACCT(fmt, ...) radlog_request(L_ACCT, L_DBG_LVL_OFF, request, fmt, ## __VA_ARGS__)
204 #define RPROXY(fmt, ...) radlog_request(L_PROXY, L_DBG_LVL_OFF, request, fmt, ## __VA_ARGS__)
205 #define RINFO(fmt, ...) radlog_request(L_INFO, L_DBG_LVL_OFF, request, fmt, ## __VA_ARGS__)
206 #define RWARN(fmt, ...) radlog_request(L_DBG_WARN, L_DBG_LVL_OFF, request, fmt, ## __VA_ARGS__)
207 #define RERROR(fmt, ...) radlog_request_error(L_DBG_ERR, L_DBG_LVL_OFF, request, fmt, ## __VA_ARGS__)
237 #define RDEBUG_ENABLED radlog_debug_enabled(L_DBG, L_DBG_LVL_1, request)
238 #define RDEBUG_ENABLED2 radlog_debug_enabled(L_DBG, L_DBG_LVL_2, request)
239 #define RDEBUG_ENABLED3 radlog_debug_enabled(L_DBG, L_DBG_LVL_3, request)
240 #define RDEBUG_ENABLED4 radlog_debug_enabled(L_DBG, L_DBG_LVL_MAX, request)
242 #define RDEBUGX(_l, fmt, ...) radlog_request(L_DBG, _l, request, fmt, ## __VA_ARGS__)
243 #define RDEBUG(fmt, ...) if (rad_debug_lvl || request->log.lvl) radlog_request(L_DBG, L_DBG_LVL_1, request, fmt, ## __VA_ARGS__)
244 #define RDEBUG2(fmt, ...) if (rad_debug_lvl || request->log.lvl) radlog_request(L_DBG, L_DBG_LVL_2, request, fmt, ## __VA_ARGS__)
245 #define RDEBUG3(fmt, ...) if (rad_debug_lvl || request->log.lvl) radlog_request(L_DBG, L_DBG_LVL_3, request, fmt, ## __VA_ARGS__)
246 #define RDEBUG4(fmt, ...) if (rad_debug_lvl || request->log.lvl) radlog_request(L_DBG, L_DBG_LVL_MAX, request, fmt, ## __VA_ARGS__)
248 #define RIDEBUG(fmt, ...) radlog_request(L_INFO, L_DBG_LVL_1, request, fmt, ## __VA_ARGS__)
249 #define RIDEBUG2(fmt, ...) radlog_request(L_INFO, L_DBG_LVL_2, request, fmt, ## __VA_ARGS__)
251 #define RWDEBUG(fmt, ...) if (rad_debug_lvl || request->log.lvl) radlog_request(L_DBG_WARN, L_DBG_LVL_1, request, fmt, ## __VA_ARGS__)
252 #define RWDEBUG2(fmt, ...) if (rad_debug_lvl || request->log.lvl) radlog_request(L_DBG_WARN, L_DBG_LVL_2, request, fmt, ## __VA_ARGS__)
254 #define REDEBUG(fmt, ...) radlog_request_error(L_DBG_ERR, L_DBG_LVL_1, request, fmt, ## __VA_ARGS__)
255 #define REDEBUG2(fmt, ...) radlog_request_error(L_DBG_ERR, L_DBG_LVL_2, request, fmt, ## __VA_ARGS__)
256 #define REDEBUG3(fmt, ...) radlog_request_error(L_DBG_ERR, L_DBG_LVL_3, request, fmt, ## __VA_ARGS__)
257 #define REDEBUG4(fmt, ...) radlog_request_error(L_DBG_ERR, L_DBG_LVL_MAX, request, fmt, ## __VA_ARGS__)
265 #define RINDENT() (request->log.indent += 2)
272 #define REXDENT() (request->log.indent -= 2)
289 #define RMARKER(_l, _p, _m, _i, _e) radlog_request_marker(_l, _p, request, _m, _i, _e)
306 #define REMARKER(_m, _i, _e) RMARKER(L_DBG_ERR, L_DBG_LVL_1, _m, _i, _e)
323 #define RDMARKER(_m, _i, _e) RMARKER(L_DBG, L_DBG_LVL_1, _m, _i, _e)
338 #define MOD_ROPTIONAL(_l_request, _l_global, fmt, ...) \
341 _l_request(fmt, ## __VA_ARGS__);\
343 _l_global(MOD_PREFIX " (%s): " fmt, inst->name, ## __VA_ARGS__);\
357 #define ROPTIONAL(_l_request, _l_global, fmt, ...) \
360 _l_request(fmt, ## __VA_ARGS__);\
362 _l_global(LOG_PREFIX ": " fmt, ## __VA_ARGS__);\
366 #define RATE_LIMIT_ENABLED rate_limit_enabled()
380 #define RATE_LIMIT(_x) \
382 if (RATE_LIMIT_ENABLED) {\
383 static time_t _last_complained = 0;\
384 time_t _now = time(NULL);\
385 if (_now != _last_complained) {\
386 _last_complained = _now;\
2nd highest priority debug messages (-xx | -X).
Only displayed when debugging is enabled.
Send log messages to a FILE*, via fopencookie()
void(* radlog_func_t)(log_type_t lvl, log_lvl_t priority, REQUEST *, char const *, va_list ap)
Less severe warning only displayed when debugging is enabled.
void * cookie
for fopencookie()
int radlog(log_type_t lvl, char const *fmt,...) CC_HINT(format(printf
3rd highest priority debug messages (-xxx | -Xx).
int(* cookie_write)(void *, char const *, int)
write function
Less severe error only displayed when debugging is enabled.
bool debug_enabled(log_type_t type, log_lvl_t lvl)
Whether a server debug message should be logged.
FR_NAME_NUMBER const log_str2dst[]
void vradlog_request(log_type_t type, log_lvl_t lvl, REQUEST *request, char const *msg, va_list ap) CC_HINT(format(printf
void radlog_request_error(log_type_t type, log_lvl_t lvl, REQUEST *request, char const *msg,...) CC_HINT(format(printf
Highest priority debug messages (-x).
Lowest priority debug messages (-xxxx | -Xxx).
FR_NAME_NUMBER const syslog_severity_table[]
Syslog severity table.
bool radlog_debug_enabled(log_type_t type, log_lvl_t lvl, REQUEST *request) CC_HINT(nonnull)
Whether a request specific debug message should be logged.
int radlog_init(fr_log_t *log, bool daemonize)
Initialise file descriptors based on logging destination.
void radlog_request(log_type_t type, log_lvl_t lvl, REQUEST *request, char const *msg,...) CC_HINT(format(printf
char const * file
Path to log file.
bool rate_limit_enabled(void)
Whether rate limiting is enabled.
FR_NAME_NUMBER const syslog_facility_table[]
Syslog facility table.
Error only displayed when debugging is enabled.
bool colourise
Prefix log messages with VT100 escape codes to change text colour.
Warning only displayed when debugging is enabled.
log_dst_t dst
Log destination.
void radlog_request_marker(log_type_t type, log_lvl_t lvl, REQUEST *request, char const *fmt, size_t indent, char const *error) CC_HINT(nonnull)
Write the string being parsed, and a marker showing where the parse error occurred.
int fd
File descriptor to write messages to.
int vradlog(log_type_t lvl, char const *fmt, va_list ap) CC_HINT(format(printf