----- Original message -----
> Since we have type hints available, lets use them! This adds support
> for 32- and 64-bit integers, datetime and boolean types (along with
> the already existing string type, of course) for the mongodb
> destination.
>
> Signed-off-by: Gergely Nagy <algernon@balabit.hu>
> ---
>  modules/afmongodb/afmongodb.c |    46
> ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45
> insertions(+), 1 deletion(-)
>
> diff --git a/modules/afmongodb/afmongodb.c
> b/modules/afmongodb/afmongodb.c index 5230d8f..ea9c002 100644
> --- a/modules/afmongodb/afmongodb.c
> +++ b/modules/afmongodb/afmongodb.c
> @@ -22,6 +22,7 @@
>    */

>  #include <time.h>
> +#include <stdlib.h>

>  #include "afmongodb.h"
>  #include "afmongodb-parser.h"
> @@ -369,7 +370,50 @@ afmongodb_vp_process_value(const gchar *name, const
> gchar *prefix,    else
>          o = (bson *)user_data;

> -  bson_append_string (o, name, value, -1);
> +  switch (type)
> +      {
> +      case TEMPLATE_TYPE_BOOLEAN:
> +          {
> +              if (value[0] == 'T' || value[0] == 't' || value[0] == '1')
> +                  bson_append_boolean (o, name, TRUE);
> +              else
> +                  bson_append_boolean (o, name, FALSE);
> +              break;
> +          }
> +      case TEMPLATE_TYPE_INT32:
> +          {
> +              gchar *endptr;
> +              gint32 i = (gint32)strtoul(value, &endptr, 10);
> +
> +              if (endptr[0] == '\0')
> +                  bson_append_int32 (o, name, i);
> +
> +              break;
> +          }

are you sure it's a good idea to drop data for invalid formats? i'd have added as strings in this case. this applies to all cases.

> +      case TEMPLATE_TYPE_INT64:
> +          {
> +              gchar *endptr;
> +              gint64 i = (gint64)strtoul(value, &endptr, 10);

strtoll?

> +
> +              if (endptr[0] == '\0')
> +                  bson_append_int64 (o, name, i);
> +
> +              break;
> +          }
> +      case TEMPLATE_TYPE_DATETIME:
> +          {
> +              gchar *endptr;
> +              gint64 i = (gint64)strtoul(value, &endptr, 10) * 1000;
> +
> +              if (endptr[0] == '\0')
> +                  bson_append_utc_datetime (o, name, i);
> +
> +              break;
> +          }

we might need to support a format with broken-down timestamp. an iso stamp might easily be formatted using a template, and the log message may carry such date in its payload.

> +      default:
> +          bson_append_string (o, name, value, -1);
> +          break;
> +      }

>      return FALSE;
>  }
> --
> 1.7.10.4
>
>
> ______________________________________________________________________________
> Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng
> Documentation:
> http://www.balabit.com/support/documentation/?product=syslog-ng FAQ:
> http://www.balabit.com/wiki/syslog-ng-faq
>