67#if defined(_XOPEN_SOURCE) || defined(CYGWIN) || defined(MACOSX)
91#define LOG_INTERNAL_ERR(err_str, action) \
92 log_internal_err("\nERROR [%s@%d]: " #err_str " - " #action, \
93 __FUNCTION__, __LINE__)
95#define LOG_INTERNAL_LOCK_ERR(name, err_str, hndl, rc, action) \
96 log_internal_lock_err( \
97 "\nERROR [%s@%d]: [" #name "] " #err_str " (%p:%d) - " #action, \
98 __FUNCTION__, __LINE__, (void *)(hndl), rc)
116#define LOG_INTERNAL_BUF_ERR(err_str, ptr, action) \
117 log_internal_err("\nERROR [%s@%d]: " #err_str \
118 " [ptr=%p, id=%4x, start=%p, end=%p" \
119 ", len=%u(0x%x), remaining=%d(0x%x)]" \
120 " wp=%u" " - %s\n", __FUNCTION__, __LINE__, \
121 ptr, (ptr)->idid, (ptr)->start, (ptr)->end, \
122 (ptr)->len, (ptr)->len, (ptr)->remaining, (ptr)->remaining, \
123 (uint)(ptr)->write_pending, #action)
131#define LOG_CLEANUP_PHASE1 FALSE
132#define LOG_CLEANUP_PHASE2 !LOG_CLEANUP_PHASE1
154#define FILTER_DEBUG_LEVEL(lvl) \
155 ((log_get_system_log_level() < (lvl)) || \
156 ((log_get_log_level() < (lvl)) && \
157 (log_get_syslog_log_level() < (lvl))))
159#define ALLOW_DEBUG_LEVEL(lvl) !FILTER_DEBUG_LEVEL(lvl)
181#define FILTER_PTHREAD_DEBUG_LEVEL(lvl) \
182 ((log_get_system_log_level() < (lvl)) || \
183 (log_get_pthread_log_level() < (lvl)))
185#define ALLOW_PTHREAD_DEBUG_LEVEL(lvl) !FILTER_PTHREAD_DEBUG_LEVEL(lvl)
203#define LOGDEV0 (log_get_system_log_level() >= LOG_DEBUG_DEV0)
227#define LOGERROR (log_get_system_log_level() >= LOG_DEBUG_ERROR)
232#define LOGWARN (log_get_system_log_level() >= LOG_DEBUG_WARN)
237#define LOGINFO (log_get_system_log_level() >= LOG_DEBUG_INFO)
240#define LOGDEV1 (log_get_system_log_level() >= LOG_DEBUG_DEV1)
245#define LOGDEBUG (log_get_system_log_level() >= LOG_DEBUG_DEBUG)
250#define LOGDEBUG2 (log_get_system_log_level() >= LOG_DEBUG_DEBUG2)
255#define LOGDEBUG3 (log_get_system_log_level() >= LOG_DEBUG_DEBUG3)
260#define LOGDEBUG4 (log_get_system_log_level() >= LOG_DEBUG_DEBUG4)
268#define LOGDEV1_THD (log_get_pthread_log_level() >= LOG_DEBUG_DEV1)
269#define LOGDBG_THD (log_get_pthread_log_level() >= LOG_DEBUG_DEBUG)
270#define LOGDBG2_THD (log_get_pthread_log_level() >= LOG_DEBUG_DEBUG2)
271#define LOGDBG3_THD (log_get_pthread_log_level() >= LOG_DEBUG_DEBUG3)
272#define LOGDBG4_THD (log_get_pthread_log_level() >= LOG_DEBUG_DEBUG4)
275#define DWRT LOG_DEBUG_WRITE
276#define DEV0 LOG_DEBUG_DEV0
277#define DERR LOG_DEBUG_ERROR
278#define DWARN LOG_DEBUG_WARN
279#define DINFO LOG_DEBUG_INFO
280#define DEV1 LOG_DEBUG_DEV1
281#define DBG LOG_DEBUG_DEBUG
282#define DBG1 LOG_DEBUG_DEBUG
283#define DBG2 LOG_DEBUG_DEBUG2
284#define DBG3 LOG_DEBUG_DEBUG3
285#define DBG4 LOG_DEBUG_DEBUG4
287#define LOG_DEBUG_STR_OFF (const xmlChar *)"off"
288#define LOG_DEBUG_STR_WRITE (const xmlChar *)"write"
289#define LOG_DEBUG_STR_DEV0 (const xmlChar *)"dev0"
290#define LOG_DEBUG_STR_ERROR (const xmlChar *)"error"
291#define LOG_DEBUG_STR_WARN (const xmlChar *)"warn"
292#define LOG_DEBUG_STR_INFO (const xmlChar *)"info"
293#define LOG_DEBUG_STR_DEV1 (const xmlChar *)"dev1"
294#define LOG_DEBUG_STR_DEBUG (const xmlChar *)"debug"
295#define LOG_DEBUG_STR_DEBUG2 (const xmlChar *)"debug2"
296#define LOG_DEBUG_STR_DEBUG3 (const xmlChar *)"debug3"
297#define LOG_DEBUG_STR_DEBUG4 (const xmlChar *)"debug4"
300#define LOG_DEBUG_APP_STR_UNKNOWN (const char *)"?yuma?"
301#define LOG_DEBUG_APP_STR_YANGCLI (const char *)"yangcli-pro"
302#define LOG_DEBUG_APP_STR_YANGDUMP (const char *)"yangdump-pro"
303#define LOG_DEBUG_APP_STR_YANGDIFF (const char *)"yangdiff-pro"
304#define LOG_DEBUG_APP_STR_NETCONFD (const char *)"netconfd-pro"
310#define FRAME_OVERHEAD_CNT 4
331typedef enum log_stream_t_ {
343typedef enum log_debug_t_ {
362typedef enum log_debug_app_t_ {
376#define VALID_DEBUG_APP(app) \
377 ((app) > LOG_DEBUG_APP_NONE) && ((app) < LOG_DEBUG_APP_MAX)
379#define APP_IS_NETCONFD (log_get_debug_app() == LOG_DEBUG_APP_NETCONFD)
384typedef void (*logfn_void_t) (void);
390typedef void (*logfn_t) (
const char *fstr, ...)
391 __attribute__ ((format (printf, 1, 2)));
397typedef void (*logfn_cmn_va_t) (
boolean recursive,
399 const char *fstr, va_list args);
404typedef void (*logfn_app_va_t) (
boolean recursive,
406 const char *fstr, va_list args);
408typedef void (*logfn_flush_t) (void);
410typedef void (*logfn_connect_t) (void);
413 const char *fstr, ...)
414 __attribute__ ((format (printf, 3, 4)));
418extern logfn_connect_t logfn_connect;
419extern logfn_send_t logfn_send;
438extern void log_enter_cs (
void );
444extern void log_exit_cs (
void );
503 log_internal_err (
const char *fstr, ...)
504 __attribute__ ((format (printf, 1, 2)));
507 log_internal_lock_err (const
char *fstr, ...)
508 __attribute__ ((format (printf, 1, 2)));
526 log_get_backtrace_detail (
void);
528 log_set_backtrace_detail (
void);
532 log_set_custom (
void);
536 log_set_localtime (
void);
540 log_set_mirroring (
void);
543 log_get_mirroring (
void);
547 log_set_stderr (
void);
551 log_set_suppress_ctrl (
void);
555 log_get_syslog_bfr_allocated (
void);
558 log_syslog_log_level (
void);
562 log_get_vendor_bfr_allocated (
void);
566 log_set_syslog_bfr_allocated (
void);
570 log_set_vendor_bfr_allocated (
void);
574 log_clr_syslog_bfr_allocated (
void);
578 log_clr_vendor_bfr_allocated (
void);
581extern
void log_set_syslog (
void);
582extern
void log_clr_syslog (
void);
583extern
boolean log_get_syslog (
void);
587 log_set_vendor (
void);
591 log_set_backtrace_logfile (
void);
595 log_set_backtrace_stderr (
void);
599 log_set_backtrace_stdout (
void);
603 log_get_backtrace_syslog (
void);
605 log_set_backtrace_syslog (
void);
609 log_get_backtrace_vendor (
void);
611 log_set_backtrace_vendor (
void);
629 log_set_backtrace (uint frame_cnt);
688 log_set_backtrace_level_mask (uint mask);
704 log_get_backtrace_level_mask (
void);
745 log_do_backtrace (
log_debug_t sub_level,
boolean flag);
916 const
char *fstr, va_list args);
932 const
char *fstr, va_list args);
967 log_print_backtrace (
boolean syslog_call,
969 logfn_flush_t localfn_flush,
972 const
char *preamble);
993 log_capture_backtrace (
char ***strP,
void *bt_arrayP, uint max_frames);
1011 log_backtrace (
log_debug_t level, const
char *fstr, ...)
1012 __attribute__ ((format (printf, 2, 3)));
1031 log_stderr_backtrace (
boolean max_detail, const
char *preamble);
1046 __attribute__ ((format (printf, 1, 2)));
1058 __attribute__ ((format (printf, 2, 3)));
1073 __attribute__ ((format (printf, 1, 2)));
1084 __attribute__ ((format (printf, 1, 2)));
1088 log_write_filtered (
log_debug_t level, const
char *fstr, ...)
1089 __attribute__ ((format (printf, 2, 3)));
1092 log_write_filtered_append (
log_debug_t level, const
char *fstr, ...)
1093 __attribute__ ((format (printf, 2, 3)));
1096 log_write_syslog_level (
log_debug_t level, const
char *fstr, ...)
1097 __attribute__ ((format (printf, 2, 3)));
1100 log_write_syslog_level_append (
log_debug_t level, const
char *fstr, ...)
1101 __attribute__ ((format (printf, 2, 3)));
1114 __attribute__ ((format (printf, 1, 2)));
1127 __attribute__ ((format (printf, 2, 3)));
1141 log_audit_indent (int32 indentcnt);
1144 log_audit_indent_level (
log_debug_t level, int32 indentcnt);
1155 __attribute__ ((format (printf, 1, 2)));
1167 __attribute__ ((format (printf, 2, 3)));
1182 log_alt_indent (int32 indentcnt);
1185 log_alt_indent_level (
log_debug_t level, int32 indentcnt);
1199 vlog_error (const
char *fstr, va_list args );
1216 __attribute__ ((format (printf, 1, 2)));
1228 __attribute__ ((format (printf, 1, 2)));
1240 __attribute__ ((format (printf, 1, 2)));
1252 __attribute__ ((format (printf, 1, 2)));
1264 __attribute__ ((format (printf, 1, 2)));
1276 __attribute__ ((format (printf, 1, 2)));
1288 __attribute__ ((format (printf, 1, 2)));
1300 __attribute__ ((format (printf, 1, 2)));
1312 __attribute__ ((format (printf, 1, 2)));
1324 __attribute__ ((format (printf, 1, 2)));
1336 __attribute__ ((format (printf, 1, 2)));
1348 __attribute__ ((format (printf, 1, 2)));
1360 __attribute__ ((format (printf, 1, 2)));
1372 __attribute__ ((format (printf, 1, 2)));
1389 log_dev0 (const
char *fstr, ...)
1390 __attribute__ ((format (printf, 1, 2)));
1393 log_dev0_append (const
char *fstr, ...)
1394 __attribute__ ((format (printf, 1, 2)));
1411 log_dev1 (const
char *fstr, ...)
1412 __attribute__ ((format (printf, 1, 2)));
1415 log_dev1_append (const
char *fstr, ...)
1416 __attribute__ ((format (printf, 1, 2)));
1433 log_write_level (
log_debug_t level, const
char *fstr, ...)
1434 __attribute__ ((format (printf, 2, 3)));
1437 log_write_level_append (
log_debug_t level, const
char *fstr, ...)
1438 __attribute__ ((format (printf, 2, 3)));
1476 log_dev1_thd (
const char *fstr, ...)
1477 __attribute__ ((format (printf, 1, 2)));
1480 log_dev1_append_thd (const
char *fstr, ...)
1481 __attribute__ ((format (printf, 1, 2)));
1484 log_debug_thd (const
char *fstr, ...)
1485 __attribute__ ((format (printf, 1, 2)));
1488 log_debug_append_thd (const
char *fstr, ...)
1489 __attribute__ ((format (printf, 1, 2)));
1492 log_debug2_thd (const
char *fstr, ...)
1493 __attribute__ ((format (printf, 1, 2)));
1496 log_debug2_append_thd (const
char *fstr, ...)
1497 __attribute__ ((format (printf, 1, 2)));
1500 log_debug3_thd (const
char *fstr, ...)
1501 __attribute__ ((format (printf, 1, 2)));
1504 log_debug3_append_thd (const
char *fstr, ...)
1505 __attribute__ ((format (printf, 1, 2)));
1508 log_debug4_thd (const
char *fstr, ...)
1509 __attribute__ ((format (printf, 1, 2)));
1512 log_debug4_append_thd (const
char *fstr, ...)
1513 __attribute__ ((format (printf, 1, 2)));
1529 log_noop (
const char *fstr, ...)
1530 __attribute__ ((format (printf, 1, 2)));
1566extern log_debug_t log_get_system_log_level (
void);
1605 log_get_debug_level_enum (
const char *str);
1608 log_parse_debug_level_str (
const char *str);
1623extern const xmlChar *
1704 log_get_debug_app (
void);
1720 log_debug_app_string (
void);
1744 log_indent (int32 indentcnt);
1746 log_indent_append (int32 indentcnt);
1748 log_indent_level_append (
log_debug_t level, int32 indentcnt);
1761 log_stdout_indent (int32 indentcnt);
1764 log_stdout_level_indent (
log_debug_t level, int32 indentcnt);
1778 log_get_logfile (
void);
1793 log_start_capture (
const char *fname);
1803 log_end_capture (
void);
1815 log_trigger_rotate (
void);
1827 log_rotate_requested (
void);
void log_alt_write(const char *fstr,...) __attribute__((format(printf
Write to the alternate log file.
logfn_t log_get_appendfn(log_debug_t loglevel)
Get the logfn_t for the corresponding log-level FOR APPEND.
Definition: log.c:3254
void void log_alt_write_level(log_debug_t level, const char *fstr,...) __attribute__((format(printf
Write to the alternate log file if debug-level set.
void log_error(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_ERROR log entry.
void void log_error_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_ERROR log entry.
void log_init(void)
Initialize logger state.
Definition: log.c:534
void log_close(void)
Close the logfile.
Definition: log.c:1125
log_debug_t log_get_pthread_log_level(void)
Get the pthreads log level.
Definition: log.c:3739
void void void void void void void log_debug(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_DEBUG log entry.
void void log_stdout_level(log_debug_t level, const char *fstr,...) __attribute__((format(printf
Write output to STDOUT if debug level set.
void log_flush(void)
Flush output buffers.
Definition: log.c:1979
status_t log_alt_open_force(const char *fname, boolean overwrite, boolean force_mode)
Open an alternate logfile for writing.
Definition: log.c:1280
void void void void void void void void void void void void log_set_log_level(log_debug_t dlevel)
Set the main log level.
Definition: log.c:3574
void void void log_write(const char *fstr,...) __attribute__((format(printf
Write a new entry to the main log.
void void void void void void void void void void void log_debug3(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_DEBUG3 log entry.
log_debug_t log_get_log_level(void)
Get the main log level.
Definition: log.c:3687
void void void void void void void void void log_audit_write(const char *fstr,...) __attribute__((format(printf
Write an new entry to the audit log file.
void log_set_highres_datetime(boolean val)
Set the high resolution date-time usage flag.
Definition: log.c:4307
log_debug_t log_get_syslog_log_level(void)
Get the syslog log level.
Definition: log.c:3702
void void void void void void void void void void log_audit_write_level(log_debug_t level, const char *fstr,...) __attribute__((format(printf
Write an new entry to the audit log file if the log level is set.
void void void void void void void void void void void void log_debug3_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_DEBUG3 log entry.
void disable_default_stdout(void)
Used by yp-client to disable log.c output.
Definition: log.c:265
void void void void void void void void void void void void void void void void void void void void logfn_t log_get_logfn(log_debug_t loglevel)
Get the logfn_t for the corresponding log-level.
Definition: log.c:3214
status_t log_alt_open(const char *fname)
Open an alternate logfile for writing.
Definition: log.c:1230
void log_alt_close(void)
Close the alternate logfile.
Definition: log.c:1317
boolean log_audit_is_open(void)
Check if the audit log is open.
Definition: log.c:1209
void void void void void void void void void void void void void void log_debug4_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_DEBUG4 log entry.
void void void log_warn(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_WARN log entry.
void void void void void void void void void void log_debug2_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_DEBUG2 log entry.
void void void void log_warn_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_WARN log entry.
boolean log_get_highres_datetime(void)
Get the high resolution date-time usage flag.
Definition: log.c:4325
status_t log_open(const char *fname, boolean append, boolean tstamps)
Open a logfile for writing.
Definition: log.c:1107
void log_audit_close(void)
Close the audit_logfile.
Definition: log.c:1181
void log_set_pthread_log_level(log_debug_t dlevel)
Set the pthreads log level.
Definition: log.c:3649
void log_set_syslog_log_level(log_debug_t dlevel)
Set the syslog log level.
Definition: log.c:3617
void void void void void void void void log_debug_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_DEBUG log entry.
void log_stdout(const char *fstr,...) __attribute__((format(printf
Write output to STDOUT.
status_t log_audit_open(const char *fname, boolean append, boolean tstamps)
Open the audit logfile for writing.
Definition: log.c:1163
void void void void void void void void void void void void void log_debug4(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_DEBUG4 log entry.
void void void void void void log_info_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_INFO log entry.
void void void void log_write_append(const char *fstr,...) __attribute__((format(printf
Append to the last log entry to the main log.
void void void void void log_info(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_INFO log entry.
void enable_default_stdout(void)
Used by C program variants of yp-client to enable log.c output.
Definition: log.c:270
status_t log_alt_open_ex(const char *fname, boolean overwrite)
Open an alternate logfile for writing.
Definition: log.c:1251
void log_cleanup(boolean phase2, boolean debugs)
Final logger cleanup prior to restart or shutdown.
Definition: log.c:559
void void void void void void void void void log_debug2(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_DEBUG2 log entry.
log_debug_app_t
syslog wants to know what app is logging ...
Definition: log.h:362
log_stream_t
The output stream enumerations used in util/log.c.
Definition: log.h:331
log_debug_t
The debug level enumerations used in util/log.c.
Definition: log.h:343
@ LOG_DEBUG_APP_YANGDIFF
app is yangdiff
Definition: log.h:366
@ LOG_DEBUG_APP_YANGCLI
app is yangcli
Definition: log.h:364
@ LOG_DEBUG_APP_NETCONFD
app is netconfd
Definition: log.h:367
@ LOG_DEBUG_APP_YANGDUMP
app is yangdump
Definition: log.h:365
@ LOG_STREAM_LOGFILE
Output destined for logfile.
Definition: log.h:335
@ LOG_STREAM_STDERR
Output destined for stderr.
Definition: log.h:334
@ LOG_STREAM_NONE
value not set or error
Definition: log.h:332
@ LOG_STREAM_STDOUT
Output destined for stdout.
Definition: log.h:333
@ LOG_STREAM_CAPFILE
Output destined for capfile.
Definition: log.h:336
@ LOG_DEBUG_DEV0
Special use developer debugging only.
Definition: log.h:347
@ LOG_DEBUG_NONE
value not set or error
Definition: log.h:344
@ LOG_DEBUG_ERROR
fatal + internal errors only
Definition: log.h:348
@ LOG_DEBUG_DEBUG
debug level 1
Definition: log.h:352
@ LOG_DEBUG_WARN
all errors + warnings
Definition: log.h:349
@ LOG_DEBUG_DEBUG2
debug level 2
Definition: log.h:353
@ LOG_DEBUG_INFO
all previous + user info trace
Definition: log.h:350
@ LOG_DEBUG_DEBUG4
debug level 4
Definition: log.h:355
@ LOG_DEBUG_DEV1
Special use developer debugging only.
Definition: log.h:351
@ LOG_DEBUG_WRITE
logging turned on
Definition: log.h:346
@ LOG_DEBUG_DEBUG3
debug level 3
Definition: log.h:354
@ LOG_DEBUG_OFF
logging turned off
Definition: log.h:345
status_t
global error return code
Definition: status_enum.h:210
Global error messages for status code enumerations.
Thread support (for now limited to netconfd)