summaryrefslogtreecommitdiffstats
path: root/server/parser/log.c
diff options
context:
space:
mode:
authorDavid Sommerseth <davids@redhat.com>2009-10-22 15:20:25 +0200
committerDavid Sommerseth <davids@redhat.com>2009-10-22 15:20:25 +0200
commitc52392156ddb07be4fc8663fe7f234dd87437386 (patch)
tree0cb8b6f556fce3499ca76a0d2648ac633e2b9f6b /server/parser/log.c
parent7b6de515e2f49e56267d47a2eec3ea899b6d2db5 (diff)
downloadrteval-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.c44
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;