diff options
author | David Sommerseth <davids@redhat.com> | 2009-10-22 15:20:25 +0200 |
---|---|---|
committer | David Sommerseth <davids@redhat.com> | 2009-10-22 15:20:25 +0200 |
commit | c52392156ddb07be4fc8663fe7f234dd87437386 (patch) | |
tree | 0cb8b6f556fce3499ca76a0d2648ac633e2b9f6b /server/parser/log.c | |
parent | 7b6de515e2f49e56267d47a2eec3ea899b6d2db5 (diff) | |
download | rteval-c52392156ddb07be4fc8663fe7f234dd87437386.tar.gz rteval-c52392156ddb07be4fc8663fe7f234dd87437386.tar.xz rteval-c52392156ddb07be4fc8663fe7f234dd87437386.zip |
Changed log level argument from int to char *
Makes it easier to implement log parameters from argument parsing
or config file
Diffstat (limited to 'server/parser/log.c')
-rw-r--r-- | server/parser/log.c | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/server/parser/log.c b/server/parser/log.c index f8fe905..7074694 100644 --- a/server/parser/log.c +++ b/server/parser/log.c @@ -32,14 +32,54 @@ #include <eurephia_nullsafe.h> #include <log.h> -LogContext *init_log(const char *fname, unsigned int verblvl) { +/** + * Maps defined log level strings into syslog + * compatible LOG_* integer values + */ +static struct { + const char *priority_str; + const int prio_level; +} syslog_prio_map[] = { + {"emerg", LOG_EMERG}, + {"emergency", LOG_EMERG}, + {"alert", LOG_ALERT}, + {"crit", LOG_CRIT}, + {"critical", LOG_CRIT}, + {"err", LOG_ERR}, + {"error", LOG_ERR}, + {"warning", LOG_WARNING}, + {"warn", LOG_WARNING}, + {"notice", LOG_NOTICE}, + {"info", LOG_INFO}, + {"debug", LOG_DEBUG}, + {NULL, 0} +}; + + +LogContext *init_log(const char *fname, const char *loglvl) { LogContext *logctx = NULL; + int i; logctx = (LogContext *) calloc(1, sizeof(LogContext)+2); assert( logctx != NULL); logctx->logfp = NULL; - logctx->verbosity = verblvl; + + // Get the int value of the log level string + logctx->verbosity = -1; + if( loglvl ) { + for( i = 0; syslog_prio_map[i].priority_str; i++ ) { + if( strcasecmp(loglvl, syslog_prio_map[i].priority_str) == 0 ) { + logctx->verbosity = syslog_prio_map[i].prio_level; + break; + } + } + } + + // If log level is not set, set LOG_INFo as default + if( logctx->verbosity == -1 ) { + logctx->verbosity = LOG_INFO; + } if( fname == NULL ) { logctx->logtype = ltSYSLOG; |