};
/* Current log levels. */
-static int levels[VLM_N_MODULES][VLF_N_FACILITIES];
+static int levels[VLM_N_MODULES][VLF_N_FACILITIES] = {
+#define VLOG_MODULE(NAME) { VLL_INFO, VLL_INFO, VLL_INFO },
+#include "vlog-modules.def"
+#undef VLOG_MODULE
+};
/* For fast checking whether we're logging anything for a given module and
* level.*/
-enum vlog_level min_vlog_levels[VLM_N_MODULES];
+enum vlog_level min_vlog_levels[VLM_N_MODULES] = {
+#define VLOG_MODULE(NAME) VLL_INFO,
+#include "vlog-modules.def"
+#undef VLOG_MODULE
+};
/* Time at which vlog was initialized, in milliseconds. */
static long long int boot_time;
static char *log_file_name;
static FILE *log_file;
+/* vlog initialized? */
+static bool vlog_inited;
+
static void format_log_message(enum vlog_module, enum vlog_level,
enum vlog_facility, unsigned int msg_num,
const char *message, va_list, struct ds *)
{
time_t now;
+ if (vlog_inited) {
+ return;
+ }
+ vlog_inited = true;
+
openlog(program_name, LOG_NDELAY, LOG_DAEMON);
- vlog_set_levels(VLM_ANY_MODULE, VLF_ANY_FACILITY, VLL_INFO);
boot_time = time_msec();
now = time_wall();
void
vlog_exit(void)
{
- closelog();
+ if (vlog_inited) {
+ closelog();
+ vlog_inited = false;
+ }
}
/* Print the current logging level for each module. */
static unsigned int msg_num;
struct ds s;
+ vlog_init();
+
ds_init(&s);
ds_reserve(&s, 1024);
msg_num++;
#include "process.h"
#include "timeval.h"
#include "util.h"
+#include "vlog.h"
#undef NDEBUG
#include <assert.h>
size_t i;
set_program_name(argv[0]);
+ vlog_set_levels(VLM_lockfile, VLF_ANY_FACILITY, VLL_ERR);
if (argc != 2) {
ovs_fatal(0, "exactly one argument required; use \"%s help\" for help",
#include "compiler.h"
#include "svec.h"
#include "util.h"
+#include "vlog.h"
static struct reconnect *reconnect;
static int now;
int old_time;
char line[128];
+ vlog_set_levels(VLM_reconnect, VLF_ANY_FACILITY, VLL_EMER);
+
now = 1000;
reconnect = reconnect_create(now);
reconnect_set_name(reconnect, "remote");