summaryrefslogtreecommitdiffstats
path: root/lib/log.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/log.h')
-rw-r--r--lib/log.h183
1 files changed, 57 insertions, 126 deletions
diff --git a/lib/log.h b/lib/log.h
index 30a81a28..5fb2f163 100644
--- a/lib/log.h
+++ b/lib/log.h
@@ -29,6 +29,7 @@
#include <signal.h>
#include <syslog.h>
#include <stdio.h>
+#include "log_common.h"
#include "vargs.h"
#include "pthread_safe.h"
@@ -48,88 +49,32 @@
* please use LOG_ERR instead.
*/
-typedef enum
-{
- ZLOG_NONE,
- ZLOG_DEFAULT,
- ZLOG_ZEBRA,
- ZLOG_RIP,
- ZLOG_BGP,
- ZLOG_OSPF,
- ZLOG_RIPNG,
- ZLOG_OSPF6,
- ZLOG_ISIS,
- ZLOG_MASC
-} zlog_proto_t;
-
-/* If maxlvl is set to ZLOG_DISABLED, then no messages will be sent
- * to that logging destination.
+/*------------------------------------------------------------------------------
+ * Pointer to default logging structure.
+ *
+ * Each daemon initialises this very early in the morning (before processing
+ * command line arguments) by:
+ *
+ * zlog_default = openzlog(....) ;
*/
-enum { ZLOG_DISABLED = LOG_EMERG - 1 } ;
-
-typedef enum
-{
- ZLOG_DEST_SYSLOG = 0,
- ZLOG_DEST_FILE,
- ZLOG_DEST_STDOUT,
- ZLOG_DEST_MONITOR,
-
- ZLOG_DEST_COUNT /* Number of destinations */
-} zlog_dest_t;
-
-struct zlog
-{
- struct zlog* next ; /* To support multiple logging streams */
-
- const char *ident; /* daemon name (first arg to openlog) */
- zlog_proto_t protocol ;
-
- int maxlvl[ZLOG_DEST_COUNT]; /* maximum priority set */
- int default_lvl; /* maxlvl to use if none is specified */
-
- int emaxlvl[ZLOG_DEST_COUNT]; /* effective maximum priority */
-
- bool syslog ; /* have active syslog */
- int file_fd ; /* fd for ZLOG_DEST_FILE (if any) */
- int stdout_fd ; /* fd for ZLOG_DEST_STDOUT */
- int monitors ; /* count of monitors */
-
- char *filename; /* for ZLOG_DEST_FILE */
-
- int facility; /* as per syslog facility */
- int syslog_options; /* 2nd arg to openlog */
-
- int timestamp_precision; /* # of digits of subsecond precision */
- bool record_priority; /* should messages logged through stdio
- include the priority of the message? */
-} ;
-
-/* Message structure. */
-struct message
-{
- int key;
- const char *str;
-};
-
-/* module initialization */
-extern void zlog_init_r(void);
-extern void zlog_destroy_r(void);
-
-/* Default logging structure. */
-extern struct zlog *zlog_default;
+extern struct zlog* zlog_default;
-/* Open zlog function */
-extern struct zlog *openzlog (const char *progname, zlog_proto_t protocol,
+/*------------------------------------------------------------------------------
+ * zlog opening etc.
+ */
+extern struct zlog* openzlog (const char *progname, zlog_proto_t protocol,
int syslog_options, int syslog_facility);
-
-/* Close zlog function. */
extern void closezlog (struct zlog *zl);
+extern void zlog_set_level(struct zlog *zl, zlog_dest_t, int log_level);
+extern int zlog_rotate (struct zlog *);
-/* Generic function for zlog. */
+/*------------------------------------------------------------------------------
+ * Functions and macros for logging.
+ */
extern void zlog (struct zlog *zl, int priority, const char *format, ...)
PRINTF_ATTRIBUTE(3, 4);
-
-/* Handy zlog functions. */
+/* Handy zlog functions.
+ */
#define zlog_thus(thus, ...) zlog(zlog_default, thus, __VA_ARGS__)
#define zlog_err(...) zlog(zlog_default, LOG_ERR, __VA_ARGS__)
#define zlog_warn(...) zlog(zlog_default, LOG_WARNING, __VA_ARGS__)
@@ -137,7 +82,8 @@ extern void zlog (struct zlog *zl, int priority, const char *format, ...)
#define zlog_notice(...) zlog(zlog_default, LOG_NOTICE, __VA_ARGS__)
#define zlog_debug(...) zlog(zlog_default, LOG_DEBUG, __VA_ARGS__)
-/* For bgpd's peer oriented log. */
+/* For bgpd's peer oriented log.
+ */
#define plog_thus(zl, thus, ...) zlog(zl, thus, __VA_ARGS__)
#define plog_err(zl, ...) zlog(zl, LOG_ERR, __VA_ARGS__)
#define plog_warn(zl, ...) zlog(zl, LOG_WARNING, __VA_ARGS__)
@@ -145,37 +91,17 @@ extern void zlog (struct zlog *zl, int priority, const char *format, ...)
#define plog_notice(zl, ...) zlog(zl, LOG_NOTICE, __VA_ARGS__)
#define plog_debug(zl, ...) zlog(zl, LOG_DEBUG, __VA_ARGS__)
-/* Set logging level for the given destination. If the log_level
- argument is ZLOG_DISABLED, then the destination is disabled.
- This function should not be used for file logging (use uzlog_set_file
- or zlog_reset_file instead). */
-extern void zlog_set_level(struct zlog *zl, zlog_dest_t, int log_level);
-
-/* Set logging to the given filename at the specified level. */
-extern int zlog_set_file(struct zlog *zl, const char *filename, int log_level);
-/* Disable file logging. */
-extern int zlog_reset_file(struct zlog *zl);
-
-/* Rotate log. */
-extern int zlog_rotate (struct zlog *);
+/*------------------------------------------------------------------------------
+ * Message and other lookups.
+ */
+struct message /* For message lookup. */
+{
+ int key;
+ const char *str;
+};
-/* getters & setters */
-extern int zlog_get_default_lvl (struct zlog *zl);
-extern void zlog_set_default_lvl (struct zlog *zl, int level);
-extern void zlog_set_default_lvl_dest (struct zlog *zl, int level);
-extern int zlog_get_maxlvl (struct zlog *zl, zlog_dest_t dest);
-extern int zlog_get_facility (struct zlog *zl);
-extern void zlog_set_facility (struct zlog *zl, int facility);
-extern bool zlog_get_record_priority (struct zlog *zl);
-extern void zlog_set_record_priority (struct zlog *zl, bool record_priority);
-extern int zlog_get_timestamp_precision (struct zlog *zl);
-extern void zlog_set_timestamp_precision (struct zlog *zl, int timestamp_precision);
-extern const char * zlog_get_ident (struct zlog *zl);
-extern char * zlog_get_filename (struct zlog *zl);
-extern bool zlog_is_file (struct zlog *zl);
extern const char * zlog_get_proto_name (struct zlog *zl);
-/* For hackey massage lookup and check */
#define LOOKUP(x, y) mes_lookup(x, x ## _max, y, "(no item found)")
extern const char *lookup (const struct message *, int);
@@ -186,9 +112,12 @@ extern const char *mes_lookup (const struct message *meslist,
extern const char *zlog_priority[];
extern const char *zlog_proto_names[];
-/* Safe version of strerror -- never returns NULL. */
extern const char *safe_strerror(int errnum);
+/*------------------------------------------------------------------------------
+ *
+ */
+
/* To be called when a fatal signal is caught. */
extern void zlog_signal(int signo, const char *action, siginfo_t *siginfo,
void *program_counter) ;
@@ -205,8 +134,9 @@ extern void zlog_backtrace(int priority);
that is logged in addition to the current backtrace. */
extern void zlog_backtrace_sigsafe(int priority, void *program_counter);
-/* Defines for use in command construction: */
-
+/*------------------------------------------------------------------------------
+ * Defines for use in command construction
+ */
#define LOG_LEVELS "(emergencies|alerts|critical|errors|" \
"warnings|notifications|informational|debugging)"
@@ -220,26 +150,27 @@ extern void zlog_backtrace_sigsafe(int priority, void *program_counter);
"Informational messages\n" \
"Debugging messages\n"
-#define LOG_FACILITIES "(kern|user|mail|daemon|auth|syslog|lpr|news|uucp|cron|local0|local1|local2|local3|local4|local5|local6|local7)"
+#define LOG_FACILITIES "(kern|user|mail|daemon|auth|syslog|lpr|news|uucp|" \
+ "cron|local0|local1|local2|local3|local4|local5|local6|local7)"
#define LOG_FACILITY_DESC \
- "Kernel\n" \
- "User process\n" \
- "Mail system\n" \
- "System daemons\n" \
- "Authorization system\n" \
- "Syslog itself\n" \
- "Line printer system\n" \
- "USENET news\n" \
- "Unix-to-Unix copy system\n" \
- "Cron/at facility\n" \
- "Local use\n" \
- "Local use\n" \
- "Local use\n" \
- "Local use\n" \
- "Local use\n" \
- "Local use\n" \
- "Local use\n" \
- "Local use\n"
+ "Kernel\n" \
+ "User process\n" \
+ "Mail system\n" \
+ "System daemons\n" \
+ "Authorization system\n" \
+ "Syslog itself\n" \
+ "Line printer system\n" \
+ "USENET news\n" \
+ "Unix-to-Unix copy system\n" \
+ "Cron/at facility\n" \
+ "Local use\n" \
+ "Local use\n" \
+ "Local use\n" \
+ "Local use\n" \
+ "Local use\n" \
+ "Local use\n" \
+ "Local use\n" \
+ "Local use\n"
#endif /* _ZEBRA_LOG_H */