From 95d606145751f160505660888e334518c0802470 Mon Sep 17 00:00:00 2001 From: Alexander Wenzel Date: Thu, 6 Oct 2011 15:41:09 +0200 Subject: All kind of text files can now be logged, e.g. /proc/version. --- src/system/dlt-system-log.c | 23 ++++++++-------- src/system/dlt-system-log.h | 2 +- src/system/dlt-system.c | 66 ++++++++++++++++++++++++++++++++++----------- src/system/dlt-system.conf | 65 +++++++++++++++++++++++++++++++++++++------- src/system/dlt-system.h | 10 +++++-- src/system/dlt-system_cfg.h | 5 +--- 6 files changed, 127 insertions(+), 44 deletions(-) diff --git a/src/system/dlt-system-log.c b/src/system/dlt-system-log.c index dc556e2..4539f88 100644 --- a/src/system/dlt-system-log.c +++ b/src/system/dlt-system-log.c @@ -121,24 +121,25 @@ void dlt_system_filetransfer_run(DltSystemOptions *options,DltSystemRuntime *run } -void dlt_system_log_kernel_version(DltSystemOptions *options,DltContext *context) { - FILE * pFile; - char buffer[1024]; - int bytes; +void dlt_system_log_file(DltSystemOptions *options,DltContext *context,int num) { + FILE * pFile; + char buffer[1024]; + int bytes; + + pFile = fopen(options->LogFileFilename[num],"r"); - pFile = fopen("/proc/version","r"); - - if(pFile>0) - { + if(pFile>0) + { + do { bytes = fread(buffer,1,sizeof(buffer)-1,pFile); - fclose(pFile); - if(bytes>0) { buffer[bytes] = 0; DLT_LOG(*context, DLT_LOG_INFO, DLT_STRING(buffer)); } - } + } while (bytes>0); + fclose(pFile); + } } void dlt_system_log_processes(DltSystemOptions *options,DltContext *context) { diff --git a/src/system/dlt-system-log.h b/src/system/dlt-system-log.h index abb8aec..3081b5c 100644 --- a/src/system/dlt-system-log.h +++ b/src/system/dlt-system-log.h @@ -4,7 +4,7 @@ extern void dlt_system_filetransfer_init(DltSystemOptions *options,DltSystemRuntime *runtime); extern void dlt_system_filetransfer_run(DltSystemOptions *options,DltSystemRuntime *runtime,DltContext *context); -extern void dlt_system_log_kernel_version(DltSystemOptions *options,DltContext *context); +extern void dlt_system_log_file(DltSystemOptions *options,DltContext *context,int num); extern void dlt_system_log_processes(DltSystemOptions *options,DltContext *context); #endif /* DLT_SYSTEM_LOG_H */ diff --git a/src/system/dlt-system.c b/src/system/dlt-system.c index 6ffacc5..1b3967c 100755 --- a/src/system/dlt-system.c +++ b/src/system/dlt-system.c @@ -96,12 +96,14 @@ #define MAXSTRLEN 1024 DLT_DECLARE_CONTEXT(syslogContext); -DLT_DECLARE_CONTEXT(kernelVersionContext); DLT_DECLARE_CONTEXT(processesContext); DLT_DECLARE_CONTEXT(filetransferContext); +DltContext logFileContext[DLT_SYSTEM_LOG_FILE_MAX]; void dlt_system_init_options(DltSystemOptions *options) { + int num; + strncpy(options->ConfigurationFile,DEFAULT_CONFIGURATION_FILE,sizeof(options->ConfigurationFile)); strncpy(options->ApplicationId,DEFAULT_APPLICATION_ID,sizeof(options->ApplicationId)); strncpy(options->SyslogContextId,DEFAULT_SYSLOG_CONTEXT_ID,sizeof(options->SyslogContextId)); @@ -110,10 +112,15 @@ void dlt_system_init_options(DltSystemOptions *options) strncpy(options->FiletransferContextId,DEFAULT_FILETRANSFER_CONTEXT_ID,sizeof(options->FiletransferContextId)); options->FiletransferTimeStartup = DEFAULT_FILETRANSFER_TIME_STARTUP; options->FiletransferTimeDelay = DEFAULT_FILETRANSFER_TIME_DELAY; - options->LogKernelVersionMode = DEFAULT_LOG_KERNEL_VERSION_MODE; - strncpy(options->LogKernelVersionContextId,DEFAULT_LOG_KERNEL_VERSION_CONTEXT_ID,sizeof(options->LogKernelVersionContextId)); options->LogProcessesMode = DEFAULT_LOG_PROCESSES_MODE; strncpy(options->LogProcessesContextId,DEFAULT_LOG_PROCESSES_CONTEXT_ID,sizeof(options->LogProcessesContextId)); + options->LogFileNumber = 0; + for(num=0;numLogFileFilename[num][0]=0; + options->LogFileMode[num]=0; + options->LogFileContextId[num][0]=0; + options->LogFileTimeDelay[num]=0; + } } int dlt_system_parse_options(DltSystemOptions *options,int argc, char* argv[]) @@ -233,16 +240,28 @@ int dlt_system_parse_configuration(DltSystemOptions *options) options->FiletransferTimeDelay = atoi(value); printf("Option: %s=%s\n",token,value); } - else if(strcmp(token,"LogKernelVersionMode")==0) + else if(strcmp(token,"LogFileFilename")==0) + { + strncpy(options->LogFileFilename[options->LogFileNumber],value,sizeof(options->LogFileFilename[options->LogFileNumber])); + printf("Option: %s=%s\n",token,value); + } + else if(strcmp(token,"LogFileMode")==0) { - options->LogKernelVersionMode = atoi(value); + options->LogFileMode[options->LogFileNumber] = atoi(value); printf("Option: %s=%s\n",token,value); } - else if(strcmp(token,"LogKernelVersionContextId")==0) + else if(strcmp(token,"LogFileTimeDelay")==0) { - strncpy(options->LogKernelVersionContextId,value,sizeof(options->LogKernelVersionContextId)); + options->LogFileTimeDelay[options->LogFileNumber] = atoi(value); printf("Option: %s=%s\n",token,value); } + else if(strcmp(token,"LogFileContextId")==0) + { + strncpy(options->LogFileContextId[options->LogFileNumber],value,sizeof(options->LogFileContextId[options->LogFileNumber])); + printf("Option: %s=%s\n",token,value); + if(options->LogFileNumber < (DLT_SYSTEM_LOG_FILE_MAX-1) ) + options->LogFileNumber++; + } else if(strcmp(token,"LogProcessesMode")==0) { options->LogProcessesMode = atoi(value); @@ -288,6 +307,7 @@ int main(int argc, char* argv[]) int retval; uint32_t lasttime; int firsttime = 1; + int num; DltSystemOptions options; DltSystemRuntime runtime; @@ -310,15 +330,19 @@ int main(int argc, char* argv[]) DLT_REGISTER_CONTEXT(syslogContext,options.SyslogContextId,"SYSLOG Adapter"); - if(options.LogKernelVersionMode != DLT_SYSTEM_MODE_OFF) - DLT_REGISTER_CONTEXT(kernelVersionContext,options.LogKernelVersionContextId,"Log Kernel version"); - if(options.LogProcessesMode != DLT_SYSTEM_MODE_OFF) DLT_REGISTER_CONTEXT(processesContext,options.LogProcessesContextId,"Log Processes"); if(options.FiletransferDirectory[0]!=0) DLT_REGISTER_CONTEXT(filetransferContext,options.FiletransferContextId,"Filetransfer"); + for(num=0;num