diff options
author | Stefan Vacek <stefan.vacek@intel.com> | 2015-08-26 17:28:54 +0200 |
---|---|---|
committer | Alexander Wenzel <Alexander.AW.Wenzel@bmw.de> | 2015-10-07 10:35:41 +0200 |
commit | c3b53f8805236cb7c72eb62ef04866f34de33103 (patch) | |
tree | 956eec44e2d0b2ec309904f15321565a3fae4e3d /src/lib/dlt_user.c | |
parent | 2f334a851fa1b39cab74724f3d0a0565f86c27b4 (diff) | |
download | DLT-daemon-c3b53f8805236cb7c72eb62ef04866f34de33103.tar.gz |
Add env-var to set initial log-levels
name of environment variable: DLT_INITIAL_LOG_LEVEL
Syntax:
<apid1>:<ctid1>:<loglevel1>;<apid2>:<ctid2>:<loglevel2>;...
apid: application id (up to 4 chars), if empty all applications will match
ctid: context id (up to 4 chars), if empty all contexts will match
loglevel: either -1..6 or a symbolic name (default, off, fatal, error,
warning, info, debug, verbose)
Examples:
DLT_INITIAL_LOG_LEVEL=TEST:LOG:0
-> turn off logging for appid TEST and contextid LOG
DLT_INITIAL_LOG_LEVEL=:LOG:warn
-> for contexts with name "LOG" set log-level to warning (3)
DLT_INITIAL_LOG_LEVEL=::VERBOSE
-> set log-level of all contexts to VERBOSE
DLT_INITIAL_LOG_LEVEL=::VERBOSE;TEST:LOG:3
-> set log-level of all contexts to VERBOSE except TEST:LOG, set this to WARNING
dlt-example-user: add option -l to specify log-level to be used when sending messages
Signed-off-by: Stefan Vacek <stefan.vacek@intel.com>
Diffstat (limited to 'src/lib/dlt_user.c')
-rw-r--r-- | src/lib/dlt_user.c | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c index e1f46ca..e4d13bb 100644 --- a/src/lib/dlt_user.c +++ b/src/lib/dlt_user.c @@ -411,6 +411,7 @@ int dlt_init_message_queue(void) int dlt_init_common(void) { char *env_local_print; + char * env_initial_log_level; /* Binary semaphore for threads */ if (sem_init(&dlt_mutex, 0, 1)==-1) @@ -467,6 +468,16 @@ int dlt_init_common(void) } } + env_initial_log_level = getenv("DLT_INITIAL_LOG_LEVEL"); + if( env_initial_log_level != NULL ) + { + if (dlt_env_extract_ll_set(&env_initial_log_level, &dlt_user.initial_ll_set) != 0) + { + snprintf(str, DLT_USER_BUFFER_LENGTH, "Unable to parse initial set of log-levels from environment! Env:\n%s\n", getenv("DLT_INITIAL_LOG_LEVEL")); + dlt_log(LOG_WARNING, str); + } + } + /* Initialize LogLevel/TraceStatus field */ DLT_SEM_LOCK(); dlt_user.dlt_ll_ts = 0; @@ -650,6 +661,8 @@ int dlt_free(void) dlt_user.dlt_ll_ts_max_num_entries = 0; dlt_user.dlt_ll_ts_num_entries = 0; } + + dlt_env_free_ll_set(&dlt_user.initial_ll_set); DLT_SEM_FREE(); char queue_name[NAME_MAX]; @@ -982,9 +995,13 @@ int dlt_register_context_ll_ts(DltContext *handle, const char *contextid, const } if (loglevel!=DLT_USER_LOG_LEVEL_NOT_SET) - { - dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level = loglevel; - } + { + dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level = dlt_env_adjust_ll_from_env(&dlt_user.initial_ll_set, dlt_user.appID, contextid, loglevel); + } + else + { + dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level = dlt_env_adjust_ll_from_env(&dlt_user.initial_ll_set, dlt_user.appID, contextid, dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level); + } if (tracestatus!=DLT_USER_TRACE_STATUS_NOT_SET) { @@ -1004,23 +1021,8 @@ int dlt_register_context_ll_ts(DltContext *handle, const char *contextid, const *(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level_ptr) = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level; *(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status_ptr) = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status = tracestatus; - if (loglevel!=DLT_USER_LOG_LEVEL_NOT_SET) - { - log.log_level = loglevel; - } - else - { - log.log_level = DLT_USER_LOG_LEVEL_NOT_SET; - } - - if (tracestatus!=DLT_USER_TRACE_STATUS_NOT_SET) - { - log.trace_status = tracestatus; - } - else - { - log.trace_status = DLT_USER_TRACE_STATUS_NOT_SET; - } + log.log_level = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level; + log.trace_status = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status; dlt_user.dlt_ll_ts_num_entries++; |