logswan

Fast Web log analyzer using probabilistic data structures
Log | Files | Refs | README | LICENSE

commit 0d416471976a7ea4a1666821023a91c357ca11f6
parent 749b876a0daee697332d041677a360f1ddc4fd08
Author: Frederic Cambus <fcambus@users.sourceforge.net>
Date:   Sun, 28 Jun 2015 16:31:41 +0200

Adding HTTP status codes distribution in the JSON output

Diffstat:
MREADME.md | 4++--
Msrc/output.c | 10+++++++++-
2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md @@ -13,12 +13,12 @@ Currently implemented features : - Counting bandwidth used - Counting log file size - GeoIP lookups (IPv4 only for now) -- Counting HTTP status codes occurences +- HTTP status codes distribution - Hourly hits distribution ## Dependencies -Logswan requires GeoIP and Jansson libraries and header files. +Logswan requires `GeoIP` and `Jansson` libraries and header files. ## Compiling diff --git a/src/output.c b/src/output.c @@ -21,7 +21,8 @@ char *output(Results results) { json_t *hitsObject = json_object(); json_t *countriesArray = json_array(); json_t *hoursArray = json_array(); - + json_t *httpStatusArray = json_array(); + for (int loop=0; loop<255; loop++) { if (results.countries[loop] != 0) { json_array_append_new(countriesArray, json_pack("{s:s, s:i}", "data", GeoIP_code_by_id(loop), "hits", results.countries[loop])); @@ -34,11 +35,18 @@ char *output(Results results) { } } + for (int loop=0; loop<512; loop++) { + if (results.httpStatus[loop] != 0) { + json_array_append_new(httpStatusArray, json_pack("{s:i, s:i}", "data", loop, "hits", results.httpStatus[loop])); + } + } + json_object_set_new(hitsObject, "ipv4", json_integer(results.hitsIPv4)); json_object_set_new(hitsObject, "ipv6", json_integer(results.hitsIPv6)); json_object_set_new(hitsObject, "total", json_integer(results.hits)); json_object_set_new(hitsObject, "countries", countriesArray); json_object_set_new(hitsObject, "hours", hoursArray); + json_object_set_new(hitsObject, "http_status", httpStatusArray); json_object_set_new(jsonObject, "date", json_string(results.timeStamp)); json_object_set_new(jsonObject, "file_size", json_integer(results.fileSize));