summaryrefslogtreecommitdiffstats
path: root/plugins/mmfields/mmfields.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2013-06-09 10:40:58 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2013-06-09 10:40:58 +0200
commit98d731554b61245532af4ed3d47385095b9b8980 (patch)
tree7c3fa699e97269d5215f4028fc80f355817c8b89 /plugins/mmfields/mmfields.c
parent7e7e92be6edc6924382284c0149cfc96fe0456d0 (diff)
downloadrsyslog-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.c15
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;
}