diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2013-06-09 10:40:58 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2013-06-09 10:40:58 +0200 |
commit | 98d731554b61245532af4ed3d47385095b9b8980 (patch) | |
tree | 7c3fa699e97269d5215f4028fc80f355817c8b89 /plugins/mmfields/mmfields.c | |
parent | 7e7e92be6edc6924382284c0149cfc96fe0456d0 (diff) | |
download | rsyslog-98d731554b61245532af4ed3d47385095b9b8980.tar.gz rsyslog-98d731554b61245532af4ed3d47385095b9b8980.tar.bz2 rsyslog-98d731554b61245532af4ed3d47385095b9b8980.zip |
mmfields: store parsed-out fields in rsyslog dictionary
Diffstat (limited to 'plugins/mmfields/mmfields.c')
-rw-r--r-- | plugins/mmfields/mmfields.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/plugins/mmfields/mmfields.c b/plugins/mmfields/mmfields.c index 618ad876..99c78916 100644 --- a/plugins/mmfields/mmfields.c +++ b/plugins/mmfields/mmfields.c @@ -137,14 +137,12 @@ CODESTARTnewActInst continue; if(!strcmp(actpblk.descr[i].name, "separator")) { pData->separator = es_getBufAddr(pvals[i].val.d.estr)[0]; -dbgprintf("DDDD: separator set to %d [%c]\n", pData->separator, pData->separator); } else { dbgprintf("mmfields: program error, non-handled " "param '%s'\n", actpblk.descr[i].name); } } -dbgprintf("DDDD: separator IS %d [%c]\n", pData->separator, pData->separator); CODE_STD_FINALIZERnewActInst cnfparamvalsDestruct(pvals, &actpblk); ENDnewActInst @@ -178,10 +176,14 @@ extractField(instanceData *pData, uchar *msgtext, int lenMsg, int *curridx, ucha RETiRet; } + static inline rsRetVal parse_fields(instanceData *pData, msg_t *pMsg, uchar *msgtext, int lenMsg) { uchar fieldbuf[32*1024]; + uchar fieldname[512]; + struct json_object *json; + struct json_object *jval; int field; uchar *buf; int currIdx = 0; @@ -193,12 +195,21 @@ parse_fields(instanceData *pData, msg_t *pMsg, uchar *msgtext, int lenMsg) CHKmalloc(buf = malloc(lenMsg+1)); } + json = json_object_new_object(); + if(json == NULL) { + ABORT_FINALIZE(RS_RET_ERR); + } field = 1; while(currIdx < lenMsg) { CHKiRet(extractField(pData, msgtext, lenMsg, &currIdx, buf)); DBGPRINTF("mmfields: field %d: '%s'\n", field, buf); + snprintf(fieldname, sizeof(fieldname), "f%d", (char*)field); + fieldname[sizeof(fieldname)-1] = '\0'; + jval = json_object_new_string((char*)fieldbuf); + json_object_object_add(json, (char*)fieldname, jval); field++; } + msgAddJSON(pMsg, (uchar*)"!", json); finalize_it: RETiRet; } |