summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2011-10-06 15:41:09 +0200
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2011-10-06 15:41:09 +0200
commit95d606145751f160505660888e334518c0802470 (patch)
tree5bd895cff537cdb03b522957640b6cc7b0c0dba5 /src
parent3367843af8cc0bd2d3392e5131bb18bddd70fc9f (diff)
downloadDLT-daemon-95d606145751f160505660888e334518c0802470.tar.gz
All kind of text files can now be logged, e.g. /proc/version.
Diffstat (limited to 'src')
-rw-r--r--src/system/dlt-system-log.c23
-rw-r--r--src/system/dlt-system-log.h2
-rwxr-xr-xsrc/system/dlt-system.c66
-rw-r--r--src/system/dlt-system.conf65
-rw-r--r--src/system/dlt-system.h10
-rw-r--r--src/system/dlt-system_cfg.h5
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"