Files
sicspsi/utils/sicslogmain.c
Koennecke Mark 78f6b92960 Added a -h option to sicslog querying
Fixed the mongodb path in sicslogmain to point to the production server
2016-04-14 14:57:55 +02:00

68 lines
1.7 KiB
C

/*
* This is a little utility for querying the SICS mongo DB log.
*
* copyright: GPL
*
* Mark Koennecke, February 2016
*/
#include <sicslogquery.h>
#include <bson.h>
#include <logv2.h>
void formatSeverity(unsigned int severity, char *buffer, unsigned int bufferLength)
{
static const char *severityText[] = {"FATAL",
"ERROR",
"WARNING",
"INFO",
"VERBOSE",
"DEBUG",
"INVALID"
};
if(severity > DEBUG){
severity = INVALID;
}
strncpy(buffer,severityText[severity-1],bufferLength);
}
/*----------------------------------------------------------------------------------------*/
static void ResultPrint(const bson_t *doc, void *userData)
{
bson_iter_t iter;
unsigned int severity;
int length;
const char *message, *timeText, *sub;
char sevBuf[20];
bson_iter_init(&iter,doc);
bson_iter_find(&iter,"timetext");
timeText = bson_iter_utf8(&iter,&length);
bson_iter_init(&iter,doc);
bson_iter_find(&iter,"severity");
severity = bson_iter_int32(&iter);
formatSeverity(severity,sevBuf,sizeof(sevBuf));
bson_iter_find(&iter,"sub");
sub = bson_iter_utf8(&iter,&length);
bson_iter_find(&iter,"message");
message = bson_iter_utf8(&iter,&length);
fprintf(stdout,"%s %s %s %s\n",timeText,sevBuf, sub, message);
}
int main(int argc, char *argv[])
{
int status;
char *error;
sicslogSetup("mongodb://logwriter:sinqsics@mpc1965:27017/?authSource=admin",NULL);
status = sicslogQuery(argc,argv,ResultPrint,NULL);
if(status != 0){
error = sicslogGetError();
fprintf(stdout,"%s\n", error);
}
return status;
}