aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2009-09-16 13:06:16 +0200
committerMartin Willi <martin@strongswan.org>2009-09-16 13:06:16 +0200
commit5289249449e0e6792cdbc014ec7bc03a0c179354 (patch)
tree4d82cb0e884a10412b40eaa1465c6b852e84aeb6 /src
parenta474081f1fa9537175f22557ca8b1cdeaff07c36 (diff)
downloadstrongswan-5289249449e0e6792cdbc014ec7bc03a0c179354.tar.bz2
strongswan-5289249449e0e6792cdbc014ec7bc03a0c179354.tar.xz
Default logger implementation can be modified by dbg_default_set_level/stream
Diffstat (limited to 'src')
-rw-r--r--src/libstrongswan/debug.c40
-rw-r--r--src/libstrongswan/debug.h10
2 files changed, 45 insertions, 5 deletions
diff --git a/src/libstrongswan/debug.c b/src/libstrongswan/debug.c
index 3db58ba74..5bd4243d7 100644
--- a/src/libstrongswan/debug.c
+++ b/src/libstrongswan/debug.c
@@ -19,19 +19,53 @@
#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, ...)
{
- if (level <= 1)
+ if (!default_stream)
+ {
+ default_stream = stderr;
+ }
+ if (level <= default_level)
{
va_list args;
va_start(args, fmt);
- vfprintf(stderr, fmt, args);
- fprintf(stderr, "\n");
+ 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;
+
diff --git a/src/libstrongswan/debug.h b/src/libstrongswan/debug.h
index c54eb293c..c3b71cee3 100644
--- a/src/libstrongswan/debug.h
+++ b/src/libstrongswan/debug.h
@@ -52,10 +52,16 @@
# define DBG4(...) {}
#endif
-/** dbg function hook, uses stderr logger by default */
+/** dbg function hook, uses dbg_default() by default */
extern void (*dbg) (int level, char *fmt, ...);
-/** default logging function, prints to stderr */
+/** default logging function */
void dbg_default(int level, char *fmt, ...);
+/** set the level logged by dbg_default() */
+void dbg_default_set_level(int level);
+
+/** set the stream logged by dbg_default() to */
+void dbg_default_set_stream(FILE *stream);
+
#endif /** DEBUG_H_ @}*/