46 #include <xmlstring.h> 67 #if defined(_XOPEN_SOURCE) || defined(CYGWIN) || defined(MACOSX) 71 #if 0 // removed -- not threadsafe, may cause deadlocks 98 #define LOG_ENTER_CS if (ncx_netconfd_running()) { \ 99 if (thd_lock_recursive_log_cs_mutex()) \ 101 SET_ERROR(ERR_MUTEX_ERR); \ 105 #define LOG_EXIT_CS if (ncx_netconfd_running()) { \ 106 if (thd_unlock_recursive_log_cs_mutex()) \ 108 SET_ERROR(ERR_MUTEX_ERR); \ 134 #define LOG_INTERNAL_ERR(err_str, action) \ 135 log_internal_err("\nERROR [%s@%d]: " #err_str " - " #action, \ 136 __FUNCTION__, __LINE__) 138 #define LOG_INTERNAL_LOCK_ERR(name, err_str, hndl, rc, action) \ 139 log_internal_lock_err( \ 140 "\nERROR [%s@%d]: [" #name "] " #err_str " (%p:%d) - " #action, \ 141 __FUNCTION__, __LINE__, (void *)(hndl), rc) 159 #define LOG_INTERNAL_BUF_ERR(err_str, ptr, action) \ 160 log_internal_err("\nERROR [%s@%d]: " #err_str \ 161 " [ptr=%p, id=%4x, start=%p, end=%p" \ 162 ", len=%u(0x%x), remaining=%d(0x%x)]" \ 163 " wp=%u" " - %s\n", __FUNCTION__, __LINE__, \ 164 ptr, (ptr)->idid, (ptr)->start, (ptr)->end, \ 165 (ptr)->len, (ptr)->len, (ptr)->remaining, (ptr)->remaining, \ 166 (uint)(ptr)->write_pending, #action) 174 #define LOG_CLEANUP_PHASE1 FALSE 175 #define LOG_CLEANUP_PHASE2 !LOG_CLEANUP_PHASE1 197 #define FILTER_DEBUG_LEVEL(lvl) \ 198 ((log_get_system_log_level() < (lvl)) || \ 199 ((log_get_log_level() < (lvl)) && \ 200 (log_get_syslog_log_level() < (lvl)))) 202 #define ALLOW_DEBUG_LEVEL(lvl) !FILTER_DEBUG_LEVEL(lvl) 224 #define FILTER_PTHREAD_DEBUG_LEVEL(lvl) \ 225 ((log_get_system_log_level() < (lvl)) || \ 226 (log_get_pthread_log_level() < (lvl))) 228 #define ALLOW_PTHREAD_DEBUG_LEVEL(lvl) !FILTER_PTHREAD_DEBUG_LEVEL(lvl) 246 #define LOGDEV0 (log_get_system_log_level() >= LOG_DEBUG_DEV0) 270 #define LOGERROR (log_get_system_log_level() >= LOG_DEBUG_ERROR) 275 #define LOGWARN (log_get_system_log_level() >= LOG_DEBUG_WARN) 280 #define LOGINFO (log_get_system_log_level() >= LOG_DEBUG_INFO) 283 #define LOGDEV1 (log_get_system_log_level() >= LOG_DEBUG_DEV1) 288 #define LOGDEBUG (log_get_system_log_level() >= LOG_DEBUG_DEBUG) 293 #define LOGDEBUG2 (log_get_system_log_level() >= LOG_DEBUG_DEBUG2) 298 #define LOGDEBUG3 (log_get_system_log_level() >= LOG_DEBUG_DEBUG3) 303 #define LOGDEBUG4 (log_get_system_log_level() >= LOG_DEBUG_DEBUG4) 311 #define LOGDEV1_THD (log_get_pthread_log_level() >= LOG_DEBUG_DEV1) 312 #define LOGDBG_THD (log_get_pthread_log_level() >= LOG_DEBUG_DEBUG) 313 #define LOGDBG2_THD (log_get_pthread_log_level() >= LOG_DEBUG_DEBUG2) 314 #define LOGDBG3_THD (log_get_pthread_log_level() >= LOG_DEBUG_DEBUG3) 315 #define LOGDBG4_THD (log_get_pthread_log_level() >= LOG_DEBUG_DEBUG4) 318 #define DWRT LOG_DEBUG_WRITE 319 #define DEV0 LOG_DEBUG_DEV0 320 #define DERR LOG_DEBUG_ERROR 321 #define DWARN LOG_DEBUG_WARN 322 #define DINFO LOG_DEBUG_INFO 323 #define DEV1 LOG_DEBUG_DEV1 324 #define DBG LOG_DEBUG_DEBUG 325 #define DBG1 LOG_DEBUG_DEBUG 326 #define DBG2 LOG_DEBUG_DEBUG2 327 #define DBG3 LOG_DEBUG_DEBUG3 328 #define DBG4 LOG_DEBUG_DEBUG4 330 #define LOG_DEBUG_STR_OFF (const xmlChar *)"off" 331 #define LOG_DEBUG_STR_WRITE (const xmlChar *)"write" 332 #define LOG_DEBUG_STR_DEV0 (const xmlChar *)"dev0" 333 #define LOG_DEBUG_STR_ERROR (const xmlChar *)"error" 334 #define LOG_DEBUG_STR_WARN (const xmlChar *)"warn" 335 #define LOG_DEBUG_STR_INFO (const xmlChar *)"info" 336 #define LOG_DEBUG_STR_DEV1 (const xmlChar *)"dev1" 337 #define LOG_DEBUG_STR_DEBUG (const xmlChar *)"debug" 338 #define LOG_DEBUG_STR_DEBUG2 (const xmlChar *)"debug2" 339 #define LOG_DEBUG_STR_DEBUG3 (const xmlChar *)"debug3" 340 #define LOG_DEBUG_STR_DEBUG4 (const xmlChar *)"debug4" 343 #define LOG_DEBUG_APP_STR_UNKNOWN (const char *)"?yuma?" 344 #define LOG_DEBUG_APP_STR_YANGCLI (const char *)"yangcli-pro" 345 #define LOG_DEBUG_APP_STR_YANGDUMP (const char *)"yangdump-pro" 346 #define LOG_DEBUG_APP_STR_YANGDIFF (const char *)"yangdiff-pro" 347 #define LOG_DEBUG_APP_STR_NETCONFD (const char *)"netconfd-pro" 353 #define FRAME_OVERHEAD_CNT 4 374 typedef enum log_stream_t_ {
386 typedef enum log_debug_t_ {
405 typedef enum log_debug_app_t_ {
419 #define VALID_DEBUG_APP(app) \ 420 ((app) > LOG_DEBUG_APP_NONE) && ((app) < LOG_DEBUG_APP_MAX) 422 #define APP_IS_NETCONFD (log_get_debug_app() == LOG_DEBUG_APP_NETCONFD) 427 typedef void (*logfn_void_t) (void);
433 typedef void (*logfn_t) (
const char *fstr, ...)
434 __attribute__ ((format (printf, 1, 2)));
440 typedef void (*logfn_cmn_va_t) (
boolean recursive,
441 log_debug_t level, log_debug_t sub_level,
442 const char *fstr, va_list args);
447 typedef void (*logfn_app_va_t) (
boolean recursive,
448 log_debug_t level, log_debug_t sub_level,
449 const char *fstr, va_list args);
451 typedef void (*logfn_flush_t) (void);
453 typedef void (*logfn_connect_t) (void);
455 typedef void (*logfn_send_t) (log_debug_app_t app, log_debug_t level,
456 const char *fstr, ...)
457 __attribute__ ((format (printf, 3, 4)));
461 extern logfn_connect_t logfn_connect;
462 extern logfn_send_t logfn_send;
481 extern void log_enter_cs (
void );
487 extern void log_exit_cs (
void );
546 log_internal_err (
const char *fstr, ...)
547 __attribute__ ((format (printf, 1, 2)));
550 log_internal_lock_err (const
char *fstr, ...)
551 __attribute__ ((format (printf, 1, 2)));
569 log_get_backtrace_detail (
void);
571 log_set_backtrace_detail (
void);
575 log_set_custom (
void);
579 log_set_localtime (
void);
583 log_set_mirroring (
void);
586 log_get_mirroring (
void);
590 log_set_stderr (
void);
594 log_set_suppress_ctrl (
void);
598 log_get_syslog_bfr_allocated (
void);
601 log_syslog_log_level (
void);
605 log_get_vendor_bfr_allocated (
void);
609 log_set_syslog_bfr_allocated (
void);
613 log_set_vendor_bfr_allocated (
void);
617 log_clr_syslog_bfr_allocated (
void);
621 log_clr_vendor_bfr_allocated (
void);
624 extern
void log_set_syslog (
void);
625 extern
void log_clr_syslog (
void);
626 extern
boolean log_get_syslog (
void);
630 log_set_vendor (
void);
634 log_set_backtrace_logfile (
void);
638 log_set_backtrace_stderr (
void);
642 log_set_backtrace_stdout (
void);
646 log_get_backtrace_syslog (
void);
648 log_set_backtrace_syslog (
void);
652 log_get_backtrace_vendor (
void);
654 log_set_backtrace_vendor (
void);
672 log_set_backtrace (uint frame_cnt);
689 log_cvt_debug_level2bit (log_debug_t level);
711 log_clear_backtrace_level (log_debug_t level);
715 log_set_backtrace_level (log_debug_t level);
731 log_set_backtrace_level_mask (uint mask);
747 log_get_backtrace_level_mask (
void);
762 log_test_backtrace_level (log_debug_t level);
788 log_do_backtrace (log_debug_t sub_level,
boolean flag);
933 log_common (
boolean recursive, log_debug_t level, log_debug_t sub_level,
934 const
char *fstr, va_list args);
949 log_append (
boolean recursive, log_debug_t level, log_debug_t sub_level,
950 const
char *fstr, va_list args);
985 log_print_backtrace (
boolean syslog_call,
986 log_debug_t orig_sub_level,
987 logfn_flush_t localfn_flush,
990 const
char *preamble);
1011 log_capture_backtrace (
char ***strP,
void *bt_arrayP, uint max_frames);
1029 log_backtrace (log_debug_t level, const
char *fstr, ...)
1030 __attribute__ ((format (printf, 2, 3)));
1049 log_stderr_backtrace (
boolean max_detail, const
char *preamble);
1064 __attribute__ ((format (printf, 1, 2)));
1076 __attribute__ ((format (printf, 2, 3)));
1091 __attribute__ ((format (printf, 1, 2)));
1102 __attribute__ ((format (printf, 1, 2)));
1106 log_write_filtered (log_debug_t level, const
char *fstr, ...)
1107 __attribute__ ((format (printf, 2, 3)));
1110 log_write_filtered_append (log_debug_t level, const
char *fstr, ...)
1111 __attribute__ ((format (printf, 2, 3)));
1114 log_write_syslog_level (log_debug_t level, const
char *fstr, ...)
1115 __attribute__ ((format (printf, 2, 3)));
1118 log_write_syslog_level_append (log_debug_t level, const
char *fstr, ...)
1119 __attribute__ ((format (printf, 2, 3)));
1132 __attribute__ ((format (printf, 1, 2)));
1145 __attribute__ ((format (printf, 2, 3)));
1159 log_audit_indent (int32 indentcnt);
1162 log_audit_indent_level (log_debug_t level, int32 indentcnt);
1173 __attribute__ ((format (printf, 1, 2)));
1185 __attribute__ ((format (printf, 2, 3)));
1200 log_alt_indent (int32 indentcnt);
1203 log_alt_indent_level (log_debug_t level, int32 indentcnt);
1217 vlog_error (const
char *fstr, va_list args );
1234 __attribute__ ((format (printf, 1, 2)));
1246 __attribute__ ((format (printf, 1, 2)));
1258 __attribute__ ((format (printf, 1, 2)));
1270 __attribute__ ((format (printf, 1, 2)));
1282 __attribute__ ((format (printf, 1, 2)));
1294 __attribute__ ((format (printf, 1, 2)));
1306 __attribute__ ((format (printf, 1, 2)));
1318 __attribute__ ((format (printf, 1, 2)));
1330 __attribute__ ((format (printf, 1, 2)));
1342 __attribute__ ((format (printf, 1, 2)));
1354 __attribute__ ((format (printf, 1, 2)));
1366 __attribute__ ((format (printf, 1, 2)));
1378 __attribute__ ((format (printf, 1, 2)));
1390 __attribute__ ((format (printf, 1, 2)));
1407 log_dev0 (const
char *fstr, ...)
1408 __attribute__ ((format (printf, 1, 2)));
1411 log_dev0_append (const
char *fstr, ...)
1412 __attribute__ ((format (printf, 1, 2)));
1429 log_dev1 (const
char *fstr, ...)
1430 __attribute__ ((format (printf, 1, 2)));
1433 log_dev1_append (const
char *fstr, ...)
1434 __attribute__ ((format (printf, 1, 2)));
1451 log_write_level (log_debug_t level, const
char *fstr, ...)
1452 __attribute__ ((format (printf, 2, 3)));
1455 log_write_level_append (log_debug_t level, const
char *fstr, ...)
1456 __attribute__ ((format (printf, 2, 3)));
1471 log_dev1_thd (
const char *fstr, ...)
1472 __attribute__ ((format (printf, 1, 2)));
1475 log_dev1_append_thd (const
char *fstr, ...)
1476 __attribute__ ((format (printf, 1, 2)));
1479 log_debug_thd (const
char *fstr, ...)
1480 __attribute__ ((format (printf, 1, 2)));
1483 log_debug_append_thd (const
char *fstr, ...)
1484 __attribute__ ((format (printf, 1, 2)));
1487 log_debug2_thd (const
char *fstr, ...)
1488 __attribute__ ((format (printf, 1, 2)));
1491 log_debug2_append_thd (const
char *fstr, ...)
1492 __attribute__ ((format (printf, 1, 2)));
1495 log_debug3_thd (const
char *fstr, ...)
1496 __attribute__ ((format (printf, 1, 2)));
1499 log_debug3_append_thd (const
char *fstr, ...)
1500 __attribute__ ((format (printf, 1, 2)));
1503 log_debug4_thd (const
char *fstr, ...)
1504 __attribute__ ((format (printf, 1, 2)));
1507 log_debug4_append_thd (const
char *fstr, ...)
1508 __attribute__ ((format (printf, 1, 2)));
1509 #endif //#ifdef PTHREADS 1524 log_noop (
const char *fstr, ...)
1525 __attribute__ ((format (printf, 1, 2)));
1561 extern log_debug_t log_get_system_log_level (
void);
1600 log_get_debug_level_enum (
const char *str);
1603 log_parse_debug_level_str (
const char *str);
1618 extern const xmlChar *
1619 log_get_debug_level_string (log_debug_t level);
1635 log_get_debug_level_value (log_debug_t level);
1651 log_debug_get_app_string (log_debug_app_t app);
1666 log_debug_app2facility (log_debug_app_t app);
1683 log_set_debug_app (log_debug_app_t app);
1698 extern log_debug_app_t
1699 log_get_debug_app (
void);
1715 log_debug_app_string (
void);
1739 log_indent (int32 indentcnt);
1741 log_indent_append (int32 indentcnt);
1743 log_indent_level_append (log_debug_t level, int32 indentcnt);
1756 log_stdout_indent (int32 indentcnt);
1759 log_stdout_level_indent (log_debug_t level, int32 indentcnt);
1773 log_get_logfile (
void);
1788 log_start_capture (
const char *fname);
1798 log_end_capture (
void);
1810 log_trigger_rotate (
void);
1822 log_rotate_requested (
void);
void log_alt_close(void)
Close the alternate logfile.
Definition: log.c:1286
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.
void void void void log_warn_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_WARN log entry.
app is yangdiff
Definition: log.h:409
Output destined for logfile.
Definition: log.h:378
log_debug_t
The debug level enumerations used in util/log.c.
Definition: log.h:386
app is yangdump
Definition: log.h:408
Output destined for stderr.
Definition: log.h:377
void void void log_write(const char *fstr,...) __attribute__((format(printf
Write a new entry to the main log.
void void log_error_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_ERROR 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 void void void void log_info(const char *fstr,...) __attribute__((format(printf
Generate a new 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.
debug level 1
Definition: log.h:395
void log_audit_close(void)
Close the audit_logfile.
Definition: log.c:1179
status_t log_alt_open_ex(const char *fname, boolean overwrite)
Open an alternate logfile for writing.
Definition: log.c:1250
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 void void log_warn(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_WARN log entry.
value not set or error
Definition: log.h:375
Output destined for stdout.
Definition: log.h:376
void void void void void void void void void void void void void void void void void void void void 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:3412
status_t log_alt_open(const char *fname)
Open an alternate logfile for writing.
Definition: log.c:1228
log_debug_t log_get_pthread_log_level(void)
Get the pthreads log level.
Definition: log.c:3577
app is yangcli
Definition: log.h:407
logging turned off
Definition: log.h:388
app is netconfd
Definition: log.h:410
void log_stdout(const char *fstr,...) __attribute__((format(printf
Write output to STDOUT.
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 void void void void void log_info_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_INFO log entry.
debug level 4
Definition: log.h:398
void log_set_pthread_log_level(log_debug_t dlevel)
Set the pthreads log level.
Definition: log.c:3487
boolean log_audit_is_open(void)
Check if the audit log is open.
Definition: log.c:1207
log_debug_app_t
syslog wants to know what app is logging ...
Definition: log.h:405
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 void void void void void void log_debug2(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_DEBUG2 log entry.
void log_error(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_ERROR log entry.
void log_flush(void)
Flush output buffers.
Definition: log.c:1897
void log_alt_write(const char *fstr,...) __attribute__((format(printf
Write to the alternate log file.
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.
all previous + user info trace
Definition: log.h:393
log_debug_t log_get_log_level(void)
Get the main log level.
Definition: log.c:3525
status_t
global error return code
Definition: status_enum.h:186
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_set_syslog_log_level(log_debug_t dlevel)
Set the syslog log level.
Definition: log.c:3455
void log_cleanup(boolean phase2, boolean debugs)
Final logger cleanup prior to restart or shutdown.
Definition: log.c:557
void log_close(void)
Close the logfile.
Definition: log.c:1123
void void void void void void void log_debug(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_DEBUG log entry.
logging turned on
Definition: log.h:389
status_t log_audit_open(const char *fname, boolean append, boolean tstamps)
Open the audit logfile for writing.
Definition: log.c:1161
Global error messages for status code enumerations.
fatal + internal errors only
Definition: log.h:391
void disable_default_stdout(void)
Used by yp-client to disable log.c output.
Definition: log.c:259
debug level 3
Definition: log.h:397
log_debug_t log_get_syslog_log_level(void)
Get the syslog log level.
Definition: log.c:3540
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 log_debug2_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_DEBUG2 log entry.
Output destined for capfile.
Definition: log.h:379
all errors + warnings
Definition: log.h:392
Special use developer debugging only.
Definition: log.h:390
value not set or error
Definition: log.h:387
Special use developer debugging only.
Definition: log.h:394
log_stream_t
The output stream enumerations used in util/log.c.
Definition: log.h:374
void enable_default_stdout(void)
Used by C program variants of yp-client to enable log.c output.
Definition: log.c:264
void log_init(void)
Initialize logger state.
Definition: log.c:532
Thread support (for now limited to netconfd)
status_t log_open(const char *fname, boolean append, boolean tstamps)
Open a logfile for writing.
Definition: log.c:1105
debug level 2
Definition: log.h:396
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.