Adding support for debug groups in libstrongswan's logger.

This commit is contained in:
Tobias Brunner
2010-04-06 12:47:40 +02:00
parent 3fdee23f18
commit 9ed6341d3f
5 changed files with 27 additions and 24 deletions
+7 -7
View File
@@ -46,19 +46,19 @@
/** /**
* hook in library for debugging messages * hook in library for debugging messages
*/ */
extern void (*dbg) (int level, char *fmt, ...); extern void (*dbg) (debug_t group, level_t level, char *fmt, ...);
/** /**
* Logging hook for library logs, using stderr output * Logging hook for library logs, using stderr output
*/ */
static void dbg_stderr(int level, char *fmt, ...) static void dbg_stderr(debug_t group, level_t level, char *fmt, ...)
{ {
va_list args; va_list args;
if (level <= 1) if (level <= 1)
{ {
va_start(args, fmt); va_start(args, fmt);
fprintf(stderr, "00[LIB] "); fprintf(stderr, "00[%N] ", debug_names, group);
vfprintf(stderr, fmt, args); vfprintf(stderr, fmt, args);
fprintf(stderr, "\n"); fprintf(stderr, "\n");
va_end(args); va_end(args);
@@ -284,14 +284,14 @@ int main(int argc, char *argv[])
if (lib->integrity && if (lib->integrity &&
!lib->integrity->check_file(lib->integrity, "charon", argv[0])) !lib->integrity->check_file(lib->integrity, "charon", argv[0]))
{ {
dbg_stderr(1, "integrity check of charon failed"); dbg_stderr(DBG_DMN, 1, "integrity check of charon failed");
library_deinit(); library_deinit();
exit(SS_RC_DAEMON_INTEGRITY); exit(SS_RC_DAEMON_INTEGRITY);
} }
if (!libhydra_init("charon")) if (!libhydra_init("charon"))
{ {
dbg_stderr(1, "initialization failed - aborting charon"); dbg_stderr(DBG_DMN, 1, "initialization failed - aborting charon");
libhydra_deinit(); libhydra_deinit();
library_deinit(); library_deinit();
exit(SS_RC_INITIALIZATION_FAILED); exit(SS_RC_INITIALIZATION_FAILED);
@@ -299,7 +299,7 @@ int main(int argc, char *argv[])
if (!libcharon_init()) if (!libcharon_init())
{ {
dbg_stderr(1, "initialization failed - aborting charon"); dbg_stderr(DBG_DMN, 1, "initialization failed - aborting charon");
goto deinit; goto deinit;
} }
@@ -358,7 +358,7 @@ int main(int argc, char *argv[])
if (!lookup_uid_gid()) if (!lookup_uid_gid())
{ {
dbg_stderr(1, "invalid uid/gid - aborting charon"); dbg_stderr(DBG_DMN, 1, "invalid uid/gid - aborting charon");
goto deinit; goto deinit;
} }
+5 -5
View File
@@ -62,22 +62,22 @@ daemon_t *charon;
/** /**
* hook in library for debugging messages * hook in library for debugging messages
*/ */
extern void (*dbg) (int level, char *fmt, ...); extern void (*dbg) (debug_t group, level_t level, char *fmt, ...);
/** /**
* we store the previous debug function so we can reset it * we store the previous debug function so we can reset it
*/ */
static void (*dbg_old) (int level, char *fmt, ...); static void (*dbg_old) (debug_t group, level_t level, char *fmt, ...);
/** /**
* Logging hook for library logs, spreads debug message over bus * Logging hook for library logs, spreads debug message over bus
*/ */
static void dbg_bus(int level, char *fmt, ...) static void dbg_bus(debug_t group, level_t level, char *fmt, ...)
{ {
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
charon->bus->vlog(charon->bus, DBG_LIB, level, fmt, args); charon->bus->vlog(charon->bus, group, level, fmt, args);
va_end(args); va_end(args);
} }
@@ -435,7 +435,7 @@ bool libcharon_init()
if (lib->integrity && if (lib->integrity &&
!lib->integrity->check(lib->integrity, "libcharon", libcharon_init)) !lib->integrity->check(lib->integrity, "libcharon", libcharon_init))
{ {
dbg(1, "integrity check of libcharon failed"); dbg(DBG_DMN, 1, "integrity check of libcharon failed");
return FALSE; return FALSE;
} }
+4 -4
View File
@@ -46,7 +46,7 @@ ENUM(debug_lower_names, DBG_DMN, DBG_LIB,
/** /**
* level logged by the default logger * level logged by the default logger
*/ */
static int default_level = 1; static level_t default_level = 1;
/** /**
* stream logged to by the default logger * stream logged to by the default logger
@@ -56,7 +56,7 @@ static FILE *default_stream = NULL;
/** /**
* default dbg function which printf all to stderr * default dbg function which printf all to stderr
*/ */
void dbg_default(int level, char *fmt, ...) void dbg_default(debug_t group, level_t level, char *fmt, ...)
{ {
if (!default_stream) if (!default_stream)
{ {
@@ -76,7 +76,7 @@ void dbg_default(int level, char *fmt, ...)
/** /**
* set the level logged by the default stderr logger * set the level logged by the default stderr logger
*/ */
void dbg_default_set_level(int level) void dbg_default_set_level(level_t level)
{ {
default_level = level; default_level = level;
} }
@@ -92,5 +92,5 @@ void dbg_default_set_stream(FILE *stream)
/** /**
* The registered debug hook. * The registered debug hook.
*/ */
void (*dbg) (int level, char *fmt, ...) = dbg_default; void (*dbg) (debug_t group, level_t level, char *fmt, ...) = dbg_default;
+10 -7
View File
@@ -91,17 +91,20 @@ enum level_t {
#endif /* DEBUG_LEVEL */ #endif /* DEBUG_LEVEL */
/** debug macros, they call the dbg function hook */ /** debug macros, they call the dbg function hook */
#if DEBUG_LEVEL >= 0
# define DBG0(group, fmt, ...) dbg(group, 0, fmt, ##__VA_ARGS__)
#endif /* DEBUG_LEVEL */
#if DEBUG_LEVEL >= 1 #if DEBUG_LEVEL >= 1
# define DBG1(fmt, ...) dbg(1, fmt, ##__VA_ARGS__) # define DBG1(group, fmt, ...) dbg(group, 1, fmt, ##__VA_ARGS__)
#endif /* DEBUG_LEVEL */ #endif /* DEBUG_LEVEL */
#if DEBUG_LEVEL >= 2 #if DEBUG_LEVEL >= 2
# define DBG2(fmt, ...) dbg(2, fmt, ##__VA_ARGS__) # define DBG2(group, fmt, ...) dbg(group, 2, fmt, ##__VA_ARGS__)
#endif /* DEBUG_LEVEL */ #endif /* DEBUG_LEVEL */
#if DEBUG_LEVEL >= 3 #if DEBUG_LEVEL >= 3
# define DBG3(fmt, ...) dbg(3, fmt, ##__VA_ARGS__) # define DBG3(group, fmt, ...) dbg(group, 3, fmt, ##__VA_ARGS__)
#endif /* DEBUG_LEVEL */ #endif /* DEBUG_LEVEL */
#if DEBUG_LEVEL >= 4 #if DEBUG_LEVEL >= 4
# define DBG4(fmt, ...) dbg(4, fmt, ##__VA_ARGS__) # define DBG4(group, fmt, ...) dbg(group, 4, fmt, ##__VA_ARGS__)
#endif /* DEBUG_LEVEL */ #endif /* DEBUG_LEVEL */
#ifndef DBG0 #ifndef DBG0
@@ -121,13 +124,13 @@ enum level_t {
#endif #endif
/** dbg function hook, uses dbg_default() by default */ /** dbg function hook, uses dbg_default() by default */
extern void (*dbg) (int level, char *fmt, ...); extern void (*dbg) (debug_t group, level_t level, char *fmt, ...);
/** default logging function */ /** default logging function */
void dbg_default(int level, char *fmt, ...); void dbg_default(debug_t group, level_t level, char *fmt, ...);
/** set the level logged by dbg_default() */ /** set the level logged by dbg_default() */
void dbg_default_set_level(int level); void dbg_default_set_level(level_t level);
/** set the stream logged by dbg_default() to */ /** set the stream logged by dbg_default() to */
void dbg_default_set_stream(FILE *stream); void dbg_default_set_stream(FILE *stream);
+1 -1
View File
@@ -85,7 +85,7 @@ u_int16_t cur_from_port; /* host order */
/** /**
* pluto dbg function for libstrongswan * pluto dbg function for libstrongswan
*/ */
static void pluto_dbg(int level, char *fmt, ...) static void pluto_dbg(debug_t group, level_t level, char *fmt, ...)
{ {
int priority = LOG_INFO; int priority = LOG_INFO;
int debug_level; int debug_level;