diff options
author | S. Hameed <shameed@jp.adit-jv.com> | 2015-08-05 15:22:20 +0900 |
---|---|---|
committer | Lutz Helwing <lutz_helwing@mentor.com> | 2015-11-24 09:48:42 +0100 |
commit | 8ed28dc15429a736c8404d491ed73fd0b04235e2 (patch) | |
tree | 0c1c68a5a58c59c3936986a4495c467798b7964b /src/daemon/dlt-daemon.c | |
parent | da4ac57d87108d8b2690979c273c000a798a59f5 (diff) | |
download | DLT-daemon-8ed28dc15429a736c8404d491ed73fd0b04235e2.tar.gz |
Offline logstorage: Offline logstorage feature
Features:
1. Offline log storage to internal and external devices (PATH based trigger)
2. File options configurable in dlt.conf
a : Appends timestamp in log file name (OfflineLogstorageTimestamp)
b : Appends delimiter in log file name (OfflineLogstorageDelimiter)
c : Wrap around value for log file count in file name (OfflineLogstorageMaxCounter)
3. Common config file parser support
Signed-off-by: S. Hameed <shameed@jp.adit-jv.com>
Signed-off-by: Christoph Lipka <clipka@jp.adit-jv.com>
Diffstat (limited to 'src/daemon/dlt-daemon.c')
-rw-r--r-- | src/daemon/dlt-daemon.c | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/src/daemon/dlt-daemon.c b/src/daemon/dlt-daemon.c index 20dda80..61aca56 100644 --- a/src/daemon/dlt-daemon.c +++ b/src/daemon/dlt-daemon.c @@ -63,6 +63,7 @@ #include "dlt_daemon_client.h" #include "dlt_daemon_connection.h" #include "dlt_daemon_event_handler.h" +#include "dlt_daemon_offline_logstorage.h" #if defined(DLT_SYSTEMD_WATCHDOG_ENABLE) || defined(DLT_SYSTEMD_ENABLE) #include "sd-daemon.h" @@ -231,6 +232,12 @@ int option_file_parser(DltDaemonLocal *daemon_local) memset(daemon_local->flags.pathToECUSoftwareVersion, 0, sizeof(daemon_local->flags.pathToECUSoftwareVersion)); daemon_local->flags.sendTimezone = 0; daemon_local->flags.offlineLogstorageMaxDevices = 0; + daemon_local->flags.offlineLogstorageDirPath[0] = 0; + daemon_local->flags.offlineLogstorageMaxDevices = 0; + daemon_local->flags.offlineLogstorageTimestamp = 1; + daemon_local->flags.offlineLogstorageDelimiter = '_'; + daemon_local->flags.offlineLogstorageMaxCounter = UINT_MAX; + daemon_local->flags.offlineLogstorageMaxCounterIdx = 0; strncpy(daemon_local->flags.ctrlSockPath, DLT_DAEMON_DEFAULT_CTRL_SOCK_PATH, sizeof(daemon_local->flags.ctrlSockPath) - 1); @@ -421,11 +428,38 @@ int option_file_parser(DltDaemonLocal *daemon_local) daemon_local->flags.sendTimezone = atoi(value); //printf("Option: %s=%s\n",token,value); } - else if(strcmp(token, "OfflineLogstorageMaxDevices")==0) + else if(strcmp(token, "OfflineLogstorageMaxDevices") == 0) { daemon_local->flags.offlineLogstorageMaxDevices = atoi(value); } - else if(strcmp(token,"ControlSocketPath")==0) + else if(strcmp(token, "OfflineLogstorageDirPath") == 0) + { + strncpy(daemon_local->flags.offlineLogstorageDirPath, + value, + sizeof(daemon_local->flags.offlineLogstorageDirPath) - 1); + } + else if(strcmp(token, "OfflineLogstorageTimestamp") == 0) + { + /* Check if set to 0, default otherwise */ + if(atoi(value) == 0) + { + daemon_local->flags.offlineLogstorageTimestamp = 0; + } + } + else if(strcmp(token, "OfflineLogstorageDelimiter") == 0) + { + /* Check if valid punctuation, default otherwise*/ + if(ispunct((char)value[0])) + { + daemon_local->flags.offlineLogstorageDelimiter = (char)value[0]; + } + } + else if(strcmp(token, "OfflineLogstorageMaxCounter") == 0) + { + daemon_local->flags.offlineLogstorageMaxCounter = atoi(value); + daemon_local->flags.offlineLogstorageMaxCounterIdx = strlen(value); + } + else if(strcmp(token,"ControlSocketPath") == 0) { memset( daemon_local->flags.ctrlSockPath, @@ -537,6 +571,16 @@ int main(int argc, char* argv[]) } /* --- Daemon init phase 2 end --- */ + if(daemon_local.flags.offlineLogstorageDirPath[0]) + { + if(dlt_daemon_logstorage_setup_internal_storage(&daemon, + daemon_local.flags.offlineLogstorageDirPath, + daemon_local.flags.vflag)==-1) + { + dlt_log(LOG_INFO,"Setting up internal offline log storage failed!\n"); + } + } + // create fd for watchdog #ifdef DLT_SYSTEMD_WATCHDOG_ENABLE { |