Default logger implementation can be modified by dbg_default_set_level/stream
[strongswan.git] / src / libstrongswan / debug.c
index a71e978..5bd4243 100644 (file)
@@ -1,10 +1,3 @@
-/**
- * @file library.c
- *
- * @brief Logging functions for the library.
- *
- */
-
 /*
  * Copyright (C) 2006 Martin Willi
  * Hochschule fuer Technik Rapperswil
 #include "debug.h"
 
 /**
+ * level logged by the default logger
+ */
+static int default_level = 1;
+
+/**
+ * stream logged to by the default logger
+ */
+static FILE *default_stream = NULL;
+
+/**
  * default dbg function which printf all to stderr
  */
 void dbg_default(int level, char *fmt, ...)
 {
-       va_list args;
-       
-       va_start(args, fmt);
-       vfprintf(stderr, fmt, args);
-       fprintf(stderr, "\n");
-       va_end(args);
+       if (!default_stream)
+       {
+               default_stream = stderr;
+       }
+       if (level <= default_level)
+       {
+               va_list args;
+
+               va_start(args, fmt);
+               vfprintf(default_stream, fmt, args);
+               fprintf(default_stream, "\n");
+               va_end(args);
+       }
 }
 
+/**
+ * set the level logged by the default stderr logger
+ */
+void dbg_default_set_level(int level)
+{
+       default_level = level;
+}
+
+/**
+ * set the stream logged by dbg_default() to
+ */
+void dbg_default_set_stream(FILE *stream)
+{
+       default_stream = stream;
+}
+
+/**
+ * The registered debug hook.
+ */
 void (*dbg) (int level, char *fmt, ...) = dbg_default;
+