/*
- * Copyright (c) 2008, 2009, 2010 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
extern "C" {
#endif
-/* Logging importance levels. */
+/* Logging importance levels.
+ *
+ * The following log levels, in descending order of importance, are enabled by
+ * default:
+ *
+ * - EMER: Not currently used.
+ *
+ * - ERR: A high-level operation or a subsystem failed. Attention is
+ * warranted.
+ *
+ * - WARN: A low-level operation failed, but higher-level subsystems may be
+ * able to recover.
+ *
+ * - INFO: Information that may be useful in retrospect when investigating
+ * a problem.
+ *
+ * The lowest log level is not enabled by default:
+ *
+ * - DBG: Information useful only to someone with intricate knowledge of the
+ * system, or that would commonly cause too-voluminous log output.
+ */
#define VLOG_LEVELS \
VLOG_LEVEL(EMER, LOG_ALERT) \
VLOG_LEVEL(ERR, LOG_ERR) \
int vlog_set_log_file(const char *file_name);
int vlog_reopen_log_file(void);
-/* Function for actual logging. */
+/* Initialization. */
void vlog_init(void);
void vlog_exit(void);
+
+/* Functions for actual logging. */
void vlog(const struct vlog_module *, enum vlog_level, const char *format, ...)
__attribute__((format(printf, 3, 4)));
void vlog_valist(const struct vlog_module *, enum vlog_level,
const char *, va_list)
__attribute__((format(printf, 3, 0)));
+
+void vlog_fatal(const struct vlog_module *, enum vlog_level,
+ const char *format, ...)
+ PRINTF_FORMAT (3, 4) NO_RETURN;
+void vlog_fatal_valist(const struct vlog_module *, enum vlog_level,
+ const char *, va_list)
+ PRINTF_FORMAT (3, 0) NO_RETURN;
+
void vlog_rate_limit(const struct vlog_module *, enum vlog_level,
struct vlog_rate_limit *, const char *, ...)
__attribute__((format(printf, 4, 5)));
*
* Guaranteed to preserve errno.
*/
+#define VLOG_FATAL(...) vlog_fatal(THIS_MODULE, VLL_ERR, __VA_ARGS__)
#define VLOG_EMER(...) VLOG(VLL_EMER, __VA_ARGS__)
#define VLOG_ERR(...) VLOG(VLL_ERR, __VA_ARGS__)
#define VLOG_WARN(...) VLOG(VLL_WARN, __VA_ARGS__)