diff options
-rw-r--r-- | src/system/dlt-system-log.c | 23 | ||||
-rw-r--r-- | src/system/dlt-system-log.h | 2 | ||||
-rwxr-xr-x | src/system/dlt-system.c | 66 | ||||
-rw-r--r-- | src/system/dlt-system.conf | 65 | ||||
-rw-r--r-- | src/system/dlt-system.h | 10 | ||||
-rw-r--r-- | 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;num<DLT_SYSTEM_LOG_FILE_MAX;num++) { + options->LogFileFilename[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<options.LogFileNumber;num++) { + if(options.LogFileFilename[num][0]!=0) + DLT_REGISTER_CONTEXT(logFileContext[num],options.LogFileContextId[num],options.LogFileFilename[num]); + runtime.timeLogFileDelay[num]=0; + + } + /* create systemd socket */ if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { @@ -391,9 +415,17 @@ int main(int argc, char* argv[]) } /* log kernel version */ - if(((options.LogKernelVersionMode == DLT_SYSTEM_MODE_STARTUP) && firsttime) || - (options.LogKernelVersionMode == DLT_SYSTEM_MODE_REGULAR) ) { - dlt_system_log_kernel_version(&options,&kernelVersionContext); + for(num=0;num<options.LogFileNumber;num++) { + if(((options.LogFileMode[num] == DLT_SYSTEM_MODE_STARTUP) && firsttime) || + (options.LogFileMode[num] == DLT_SYSTEM_MODE_REGULAR) ) { + if(runtime.timeLogFileDelay[num]<=0) { + dlt_system_log_file(&options,&logFileContext[num],num); + runtime.timeLogFileDelay[num]=options.LogFileTimeDelay[num]-1; + } + else { + runtime.timeLogFileDelay[num]--; + } + } } /* log processes information */ @@ -434,14 +466,16 @@ int main(int argc, char* argv[]) } } - if(options.LogKernelVersionMode != DLT_SYSTEM_MODE_OFF) - DLT_UNREGISTER_CONTEXT(kernelVersionContext); - if(options.LogProcessesMode != DLT_SYSTEM_MODE_OFF) DLT_UNREGISTER_CONTEXT(processesContext); if(options.FiletransferDirectory[0]!=0) DLT_UNREGISTER_CONTEXT(filetransferContext); + + for(num=0;num<options.LogFileNumber;num++) { + if(options.LogFileFilename[num][0]!=0) + DLT_UNREGISTER_CONTEXT(logFileContext[num]); + } DLT_UNREGISTER_CONTEXT(syslogContext); DLT_UNREGISTER_APP(); diff --git a/src/system/dlt-system.conf b/src/system/dlt-system.conf index ee67a0b..f194bf5 100644 --- a/src/system/dlt-system.conf +++ b/src/system/dlt-system.conf @@ -38,24 +38,69 @@ FiletransferTimeStartup = 5 FiletransferTimeDelay = 3 ######################################################################## -# Log Kernel version +# Log short files, expecially from proc filesystem ######################################################################## -# Log the file /proc/version (Default: 1) -# 0 = off, 1 = startup only, 2 = regular -LogKernelVersionMode = 2 - -# The Context Id of the kernel version (Default: VERS) -LogKernelVersionContextId = KVER +# Log different files +# Mode: 0 = off, 1 = startup only, 2 = regular +# TimeDelay: If mode regular is set, time delay is the number of seconds for next sent + +# Log the file /etc/sysrel +LogFileFilename = /etc/sysrel +LogFileMode = 1 +LogFileTimeDelay = 3 +LogFileContextId = VER + +# Log the file /proc/version +LogFileFilename = /proc/version +LogFileMode = 1 +LogFileTimeDelay = 3 +LogFileContextId = KVER + +# Log the file /proc/meminfo +LogFileFilename = /proc/meminfo +LogFileMode = 2 +LogFileTimeDelay = 5 +LogFileContextId = MEM + +# Log the file /proc/cpuinfo +LogFileFilename = /proc/cpuinfo +LogFileMode = 2 +LogFileTimeDelay = 5 +LogFileContextId = CPU + +# Log the file /proc/stat +LogFileFilename = /proc/stat +LogFileMode = 2 +LogFileTimeDelay = 5 +LogFileContextId = STAT + +# Log the file /proc/modules +LogFileFilename = /proc/modules +LogFileMode = 2 +LogFileTimeDelay = 5 +LogFileContextId = MOD + +# Log the file /proc/ioports +LogFileFilename = /proc/ioports +LogFileMode = 1 +LogFileTimeDelay = 5 +LogFileContextId = IOP + +# Log the file /proc/iomem +LogFileFilename = /proc/iomem +LogFileMode = 1 +LogFileTimeDelay = 5 +LogFileContextId = IOM ######################################################################## # Log Processes ######################################################################## -# Log the processes in /proc with info from /proc/x/stat (Default: 1) +# Log the processes in /proc with info from /proc/x/stat (Default: 0) # 0 = off, 1 = startup only, 2 = regular -LogProcessesMode = 0 +# LogProcessesMode = 1 # The Context Id of the kernel version (Default: PROC) -LogProcessesContextId = PROC +# LogProcessesContextId = PROC diff --git a/src/system/dlt-system.h b/src/system/dlt-system.h index 40f1dbd..d548036 100644 --- a/src/system/dlt-system.h +++ b/src/system/dlt-system.h @@ -5,6 +5,8 @@ #define DLT_SYSTEM_MODE_STARTUP 1 #define DLT_SYSTEM_MODE_REGULAR 2 +#define DLT_SYSTEM_LOG_FILE_MAX 32 + typedef struct { char ConfigurationFile[256]; char ApplicationId[256]; @@ -14,8 +16,11 @@ typedef struct { char FiletransferContextId[256]; int FiletransferTimeStartup; int FiletransferTimeDelay; - int LogKernelVersionMode; - char LogKernelVersionContextId[256]; + int LogFileNumber; + char LogFileFilename[DLT_SYSTEM_LOG_FILE_MAX][256]; + int LogFileMode[DLT_SYSTEM_LOG_FILE_MAX]; + int LogFileTimeDelay[DLT_SYSTEM_LOG_FILE_MAX]; + char LogFileContextId[DLT_SYSTEM_LOG_FILE_MAX][256]; int LogProcessesMode; char LogProcessesContextId[256]; } DltSystemOptions; @@ -24,6 +29,7 @@ typedef struct { int timeStartup; /* time in seconds since startup of dlt-system */ int timeFiletransferDelay; /* time in seconds to start next filetransfer */ char filetransferFile[256]; + int timeLogFileDelay[DLT_SYSTEM_LOG_FILE_MAX]; /* time in seconds to start next file log */ int filetransferRunning; /* 0 = stooped, 1 = running */ int filetransferCountPackages; /* number of packets to be transfered */ int filetransferLastSentPackage; /* last packet sent starting from 1 */ diff --git a/src/system/dlt-system_cfg.h b/src/system/dlt-system_cfg.h index a0cef07..8c015c0 100644 --- a/src/system/dlt-system_cfg.h +++ b/src/system/dlt-system_cfg.h @@ -9,8 +9,5 @@ #define DEFAULT_FILETRANSFER_TIME_STARTUP 30 #define DEFAULT_FILETRANSFER_TIME_DELAY 10 -#define DEFAULT_LOG_KERNEL_VERSION_MODE 1 -#define DEFAULT_LOG_KERNEL_VERSION_CONTEXT_ID "VERS" - -#define DEFAULT_LOG_PROCESSES_MODE 1 +#define DEFAULT_LOG_PROCESSES_MODE 0 #define DEFAULT_LOG_PROCESSES_CONTEXT_ID "PROC" |