[syslog-ng] [PATCH] jsonparser: New parser module for JSON parsing.
Balazs Scheidler
bazsi at balabit.hu
Sat Oct 29 13:38:31 CEST 2011
This is cool stuff, but again doesn't compile with a stock json-c.
Hmm.. this time I've checked, newer json-c versions do install the
referenced headers. Then I guess it's it needs an updated version number
in configure.in.
On Fri, 2011-10-28 at 16:04 +0200, Gergely Nagy wrote:
> The new parser supports json-c only, it does not work with
> json-glib. For this reason, the configure script was modified a
> little, so that it uses --with-json only. When json-c is found or
> selected, then both the parser and the template function will be
> built. If json-glib is found or selected, then only the template
> function will be available.
>
> The summary after configure now lists the determined settings.
>
> The new parser is - so far - fairly simple: it parses a JSON with
> json-c (int, double and string values are supported so far, booleans,
> arrays and sub-objects aren't yet), and sets the appropriate
> name-value pair in the LogMessage.
>
> Users can configure a prefix to prepend before each key.
>
> Usage is as simple as:
>
> source s_json { tcp(port(21514) flags(no-parse)); };
> destination d_json {
> file("/tmp/test.json"
> template("$(format-json --scope dot-nv-pairs)\n"));
> };
> parser p_json { json-parser (prefix(".json.")); };
> log { source(s_json); parser(p_json); destination(d_json); };
>
> Signed-off-by: Gergely Nagy <algernon at balabit.hu>
> ---
> configure.in | 34 ++++---
> modules/Makefile.am | 2 +-
> modules/jsonparser/Makefile.am | 22 ++++
> modules/jsonparser/jsonparser-grammar.ym | 86 ++++++++++++++++
> modules/jsonparser/jsonparser-parser.c | 49 +++++++++
> modules/jsonparser/jsonparser-parser.h | 34 +++++++
> modules/jsonparser/jsonparser-plugin.c | 53 ++++++++++
> modules/jsonparser/jsonparser.c | 158 ++++++++++++++++++++++++++++++
> modules/jsonparser/jsonparser.h | 33 ++++++
> modules/tfjson/Makefile.am | 2 +-
> 10 files changed, 455 insertions(+), 18 deletions(-)
> create mode 100644 modules/jsonparser/Makefile.am
> create mode 100644 modules/jsonparser/jsonparser-grammar.ym
> create mode 100644 modules/jsonparser/jsonparser-parser.c
> create mode 100644 modules/jsonparser/jsonparser-parser.h
> create mode 100644 modules/jsonparser/jsonparser-plugin.c
> create mode 100644 modules/jsonparser/jsonparser.c
> create mode 100644 modules/jsonparser/jsonparser.h
>
> diff --git a/configure.in b/configure.in
> index 0d97bde..e9b0148 100644
> --- a/configure.in
> +++ b/configure.in
> @@ -178,10 +178,6 @@ AC_ARG_WITH(json,
> Use the JSON implementation specified]
> ,,with_json="auto")
>
> -AC_ARG_ENABLE(json,
> - [ --enable-json Enable support for JSON template formatting (default: auto)]
> - ,,enable_json="auto")
> -
> AC_ARG_ENABLE(systemd,
> [ --enable-systemd Enable systemd support (default: auto)]
> ,,enable_systemd="auto")
> @@ -607,8 +603,12 @@ fi
> dnl ***************************************************************************
> dnl json headers/libraries
> dnl ***************************************************************************
> -PKG_CHECK_MODULES(JSON_C, json >= $JSON_C_MIN_VERSION,, JSON_C_LIBS="")
> -PKG_CHECK_MODULES(JSON_GLIB, json-glib-1.0 >= $JSON_GLIB_MIN_VERSION,, JSON_GLIB_LIBS="")
> +if test "x$with_json" = "xauto" || test "x$with_json" = "json-c"; then
> + PKG_CHECK_MODULES(JSON_C, json >= $JSON_C_MIN_VERSION,, JSON_C_LIBS="")
> +fi
> +if test "x$with_json" = "xauto" || test "x$with_json" = "json-glib"; then
> + PKG_CHECK_MODULES(JSON_GLIB, json-glib-1.0 >= $JSON_GLIB_MIN_VERSION,, JSON_GLIB_LIBS="")
> +fi
>
> dnl ***************************************************************************
> dnl pcre headers/libraries
> @@ -887,14 +887,14 @@ elif test "x$with_json" = "xjson-c"; then
> AC_MSG_ERROR([Cannot find json-c version >= $JSON_C_MIN_VERSION: is pkg-config in path?])
> fi
>
> -if test "x$enable_json" = "xauto"; then
> - if test "x$with_json" = "xno"; then
> - enable_json="no"
> - else
> - enable_json="yes"
> - fi
> -elif test "x$enable_json" = "xyes" -a "x$with_json" = "xno"; then
> - AC_MSG_ERROR([Cannot find json-c version >= $JSON_C_MIN_VERSION or json-glib-1.0 >= $JSON_GLIB_MIN_VERSION: is pkg-config in path?])
> +if test "x$with_json" = "xjson-c"; then
> + enable_json_parse="yes"
> + enable_json_format="yes"
> +fi
> +
> +if test "x$with_json" = "xjson-glib"; then
> + enable_json_parse="no"
> + enable_json_format="yes"
> fi
>
> if test "x$enable_systemd" = "xauto"; then
> @@ -1077,7 +1077,8 @@ AM_CONDITIONAL(ENABLE_SQL, [test "$enable_sql" = "yes"])
> AM_CONDITIONAL(ENABLE_SUN_STREAMS, [test "$enable_sun_streams" = "yes"])
> AM_CONDITIONAL(ENABLE_PACCT, [test "$enable_pacct" = "yes"])
> AM_CONDITIONAL(ENABLE_MONGODB, [test "$enable_mongodb" = "yes"])
> -AM_CONDITIONAL(ENABLE_JSON, [test "$enable_json" = "yes"])
> +AM_CONDITIONAL(ENABLE_JSON_FORMAT, [test "$enable_json_format" = "yes"])
> +AM_CONDITIONAL(ENABLE_JSON_PARSE, [test "$enable_json_parse" = "yes"])
> AM_CONDITIONAL(WITH_LIBSYSTEMD, [test "$with_libsystemd" = "yes"])
>
> # substitution into manual pages
> @@ -1145,6 +1146,7 @@ AC_OUTPUT(dist.conf
> modules/basicfuncs/Makefile
> modules/convertfuncs/Makefile
> modules/tfjson/Makefile
> + modules/jsonparser/Makefile
> scripts/Makefile
> scripts/update-patterndb
> doc/Makefile
> @@ -1194,6 +1196,6 @@ echo " SSL support (module) : ${enable_ssl:=no}"
> echo " SQL support (module) : ${enable_sql:=no}"
> echo " PACCT module (EXPERIMENTAL) : ${enable_pacct:=no}"
> echo " MongoDB destination (module): ${enable_mongodb:=no}"
> -echo " JSON support (module) : ${enable_json:=no} (using ${with_json})"
> +echo " JSON support (module) : parser=${enable_json_parse:=no}, formatter=${enable_json_format:=no} (using ${with_json})"
>
>
> diff --git a/modules/Makefile.am b/modules/Makefile.am
> index 46de2b8..9f67920 100644
> --- a/modules/Makefile.am
> +++ b/modules/Makefile.am
> @@ -1 +1 @@
> -SUBDIRS = afsocket afsql afstreams affile afprog afuser afmongodb csvparser confgen syslogformat pacctformat basicfuncs convertfuncs dbparser tfjson dummy
> +SUBDIRS = afsocket afsql afstreams affile afprog afuser afmongodb csvparser confgen syslogformat pacctformat basicfuncs convertfuncs dbparser tfjson jsonparser dummy
> diff --git a/modules/jsonparser/Makefile.am b/modules/jsonparser/Makefile.am
> new file mode 100644
> index 0000000..0925f98
> --- /dev/null
> +++ b/modules/jsonparser/Makefile.am
> @@ -0,0 +1,22 @@
> +moduledir = @moduledir@
> +AM_CPPFLAGS = -I$(top_srcdir)/lib -I../../lib
> +export top_srcdir
> +
> +if ENABLE_JSON_PARSE
> +module_LTLIBRARIES := libjsonparser.la
> +libjsonparser_la_SOURCES = \
> + jsonparser.c jsonparser.h \
> + jsonparser-grammar.y \
> + jsonparser-parser.c jsonparser-parser.h \
> + jsonparser-plugin.c
> +
> +libjsonparser_la_CPPFLAGS = $(AM_CPPFLAGS)
> +libjsonparser_la_CFLAGS = $(JSON_CFLAGS)
> +libjsonparser_la_LIBADD = $(MODULE_DEPS_LIBS)
> +libjsonparser_la_LDFLAGS = $(MODULE_LDFLAGS) $(JSON_LIBS)
> +
> +BUILT_SOURCES = jsonparser-grammar.y jsonparser-grammar.c jsonparser-grammar.h
> +EXTRA_DIST = $(BUILT_SOURCES) jsonparser-grammar.ym
> +endif
> +
> +include $(top_srcdir)/build/lex-rules.am
> diff --git a/modules/jsonparser/jsonparser-grammar.ym b/modules/jsonparser/jsonparser-grammar.ym
> new file mode 100644
> index 0000000..2fe2f3c
> --- /dev/null
> +++ b/modules/jsonparser/jsonparser-grammar.ym
> @@ -0,0 +1,86 @@
> +/*
> + * Copyright (c) 2011 BalaBit IT Ltd, Budapest, Hungary
> + * Copyright (c) 2011 Gergely Nagy <algernon at balabit.hu>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 as published
> + * by the Free Software Foundation, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> + *
> + * As an additional exemption you are allowed to compile & link against the
> + * OpenSSL libraries as published by the OpenSSL project. See the file
> + * COPYING for details.
> + */
> +
> +%code top {
> +#include "jsonparser-parser.h"
> +
> +}
> +
> +
> +%code {
> +
> +#include "jsonparser.h"
> +#include "cfg-parser.h"
> +#include "jsonparser-grammar.h"
> +#include "syslog-names.h"
> +#include "messages.h"
> +
> +extern LogParser *last_parser;
> +
> +}
> +
> +%name-prefix "jsonparser_"
> +
> +/* this parameter is needed in order to instruct bison to use a complete
> + * argument list for yylex/yyerror */
> +
> +%lex-param {CfgLexer *lexer}
> +%parse-param {CfgLexer *lexer}
> +%parse-param {LogParser **instance}
> +%parse-param {gpointer arg}
> +
> +/* INCLUDE_DECLS */
> +
> +%token KW_JSON_PARSER
> +%token KW_PREFIX
> +
> +%type <ptr> parser_expr_json
> +
> +%%
> +
> +start
> + : LL_CONTEXT_PARSER parser_expr_json { YYACCEPT; }
> + ;
> +
> +
> +parser_expr_json
> + : KW_JSON_PARSER '('
> + {
> + last_parser = *instance = (LogParser *) log_json_parser_new();
> + }
> + parser_json_opts
> + ')' { $$ = last_parser; }
> + ;
> +
> +parser_json_opts
> + : parser_json_opt parser_json_opts
> + |
> + ;
> +
> +parser_json_opt
> + : KW_PREFIX '(' string ')' { log_json_parser_set_prefix(last_parser, $3); free ($3); }
> + |
> + ;
> +
> +/* INCLUDE_RULES */
> +
> +%%
> diff --git a/modules/jsonparser/jsonparser-parser.c b/modules/jsonparser/jsonparser-parser.c
> new file mode 100644
> index 0000000..a7fe1a6
> --- /dev/null
> +++ b/modules/jsonparser/jsonparser-parser.c
> @@ -0,0 +1,49 @@
> +/*
> + * Copyright (c) 2011 BalaBit IT Ltd, Budapest, Hungary
> + * Copyright (c) 2011 Gergely Nagy <algernon at balabit.hu>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 as published
> + * by the Free Software Foundation, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> + *
> + * As an additional exemption you are allowed to compile & link against the
> + * OpenSSL libraries as published by the OpenSSL project. See the file
> + * COPYING for details.
> + */
> +
> +#include "jsonparser.h"
> +#include "cfg-parser.h"
> +#include "jsonparser-grammar.h"
> +
> +extern int jsonparser_debug;
> +
> +int jsonparser_parse(CfgLexer *lexer, LogParser **instance, gpointer arg);
> +
> +static CfgLexerKeyword jsonparser_keywords[] =
> +{
> + { "json_parser", KW_JSON_PARSER, },
> + { "prefix", KW_PREFIX, },
> + { NULL }
> +};
> +
> +CfgParser jsonparser_parser =
> +{
> +#if ENABLE_DEBUG
> + .debug_flag = &jsonparser_debug,
> +#endif
> + .name = "jsonparser",
> + .keywords = jsonparser_keywords,
> + .parse = (gint (*)(CfgLexer *, gpointer *, gpointer)) jsonparser_parse,
> + .cleanup = (void (*)(gpointer)) log_pipe_unref,
> +};
> +
> +CFG_PARSER_IMPLEMENT_LEXER_BINDING(jsonparser_, LogParser **)
> diff --git a/modules/jsonparser/jsonparser-parser.h b/modules/jsonparser/jsonparser-parser.h
> new file mode 100644
> index 0000000..22ceb84
> --- /dev/null
> +++ b/modules/jsonparser/jsonparser-parser.h
> @@ -0,0 +1,34 @@
> +/*
> + * Copyright (c) 2011 BalaBit IT Ltd, Budapest, Hungary
> + * Copyright (c) 2011 Gergely Nagy <algernon at balabit.hu>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 as published
> + * by the Free Software Foundation, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> + *
> + * As an additional exemption you are allowed to compile & link against the
> + * OpenSSL libraries as published by the OpenSSL project. See the file
> + * COPYING for details.
> + */
> +
> +#ifndef JSONPARSER_PARSER_H_INCLUDED
> +#define JSONPARSER_PARSER_H_INCLUDED
> +
> +#include "cfg-parser.h"
> +#include "cfg-lexer.h"
> +#include "logparser.h"
> +
> +extern CfgParser jsonparser_parser;
> +
> +CFG_PARSER_DECLARE_LEXER_BINDING(jsonparser_, LogParser **)
> +
> +#endif
> diff --git a/modules/jsonparser/jsonparser-plugin.c b/modules/jsonparser/jsonparser-plugin.c
> new file mode 100644
> index 0000000..15c4c91
> --- /dev/null
> +++ b/modules/jsonparser/jsonparser-plugin.c
> @@ -0,0 +1,53 @@
> +/*
> + * Copyright (c) 2011 BalaBit IT Ltd, Budapest, Hungary
> + * Copyright (c) 2011 Gergely Nagy <algernon at balabit.hu>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 as published
> + * by the Free Software Foundation, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> + *
> + * As an additional exemption you are allowed to compile & link against the
> + * OpenSSL libraries as published by the OpenSSL project. See the file
> + * COPYING for details.
> + */
> +
> +#include "cfg-parser.h"
> +#include "plugin.h"
> +#include "jsonparser.h"
> +
> +extern CfgParser jsonparser_parser;
> +
> +static Plugin jsonparser_plugins[] =
> +{
> + {
> + .type = LL_CONTEXT_PARSER,
> + .name = "json-parser",
> + .parser = &jsonparser_parser,
> + },
> +};
> +
> +gboolean
> +jsonparser_module_init(GlobalConfig *cfg, CfgArgs *args)
> +{
> + plugin_register(cfg, jsonparser_plugins, G_N_ELEMENTS(jsonparser_plugins));
> + return TRUE;
> +}
> +
> +const ModuleInfo module_info =
> +{
> + .canonical_name = "jsonparser",
> + .version = VERSION,
> + .description = "The jsonparser module provides JSON parsing support for syslog-ng.",
> + .core_revision = SOURCE_REVISION,
> + .plugins = jsonparser_plugins,
> + .plugins_len = G_N_ELEMENTS(jsonparser_plugins),
> +};
> diff --git a/modules/jsonparser/jsonparser.c b/modules/jsonparser/jsonparser.c
> new file mode 100644
> index 0000000..f42766d
> --- /dev/null
> +++ b/modules/jsonparser/jsonparser.c
> @@ -0,0 +1,158 @@
> +/*
> + * Copyright (c) 2011 BalaBit IT Ltd, Budapest, Hungary
> + * Copyright (c) 2011 Gergely Nagy <algernon at balabit.hu>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 as published
> + * by the Free Software Foundation, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> + *
> + * As an additional exemption you are allowed to compile & link against the
> + * OpenSSL libraries as published by the OpenSSL project. See the file
> + * COPYING for details.
> + */
> +
> +#include "jsonparser.h"
> +#include "logparser.h"
> +
> +#include <string.h>
> +
> +#include <json.h>
> +#include <json_object_private.h>
> +
> +struct _LogJSONParser
> +{
> + LogParser super;
> + gchar *prefix;
> +
> + json_tokener *tokener;
> + struct
> + {
> + GString *key;
> + GString *value;
> + } serialized;
> +};
> +
> +void
> +log_json_parser_set_prefix (LogParser *p, const gchar *prefix)
> +{
> + LogJSONParser *self = (LogJSONParser *)p;
> +
> + g_free (self->prefix);
> + self->prefix = g_strdup (prefix);
> +}
> +
> +static gboolean
> +log_json_parser_process (LogParser *s, LogMessage *msg, const gchar *input)
> +{
> + LogJSONParser *self = (LogJSONParser *) s;
> + struct json_object *jso;
> + struct json_object_iter itr;
> +
> + json_tokener_reset (self->tokener);
> + jso = json_tokener_parse_ex (self->tokener, input, strlen (input));
> +
> + json_object_object_foreachC (jso, itr)
> + {
> + gboolean parsed = FALSE;
> +
> + switch (json_object_get_type (itr.val))
> + {
> + case json_type_boolean:
> + msg_info ("JSON parser does not support boolean types yet, skipping",
> + evt_tag_str ("key", itr.key), NULL);
> + break;
> + case json_type_double:
> + parsed = TRUE;
> + g_string_printf (self->serialized.value, "%f",
> + json_object_get_double (itr.val));
> + break;
> + case json_type_int:
> + parsed = TRUE;
> + g_string_printf (self->serialized.value, "%i",
> + json_object_get_int (itr.val));
> + break;
> + case json_type_string:
> + parsed = TRUE;
> + g_string_assign (self->serialized.value,
> + json_object_get_string (itr.val));
> + break;
> + case json_type_object:
> + case json_type_array:
> + msg_error ("JSON parser does not support objects and arrays yet, "
> + "skipping",
> + evt_tag_str ("key", itr.key), NULL);
> + break;
> + default:
> + msg_error ("JSON parser encountered an unknown type, skipping",
> + evt_tag_str ("key", itr.key), NULL);
> + break;
> + }
> +
> + if (parsed)
> + {
> + if (self->prefix)
> + g_string_printf (self->serialized.key, "%s%s",
> + self->prefix, itr.key);
> + else
> + g_string_assign (self->serialized.key, itr.key);
> + log_msg_set_value (msg,
> + log_msg_get_value_handle (self->serialized.key->str),
> + self->serialized.value->str,
> + self->serialized.value->len);
> + }
> + }
> + json_object_put (jso);
> +
> + return TRUE;
> +}
> +
> +static LogPipe *
> +log_json_parser_clone (LogProcessPipe *s)
> +{
> + LogJSONParser *self = (LogJSONParser *) s;
> + LogJSONParser *cloned;
> +
> + cloned = (LogJSONParser *) log_json_parser_new ();
> + log_json_parser_set_prefix ((LogParser *)cloned, self->prefix);
> +
> + return &cloned->super.super.super;
> +}
> +
> +static void
> +log_json_parser_free (LogPipe *s)
> +{
> + LogJSONParser *self = (LogJSONParser *)s;
> +
> + g_free (self->prefix);
> + g_string_free (self->serialized.key, TRUE);
> + g_string_free (self->serialized.value, TRUE);
> +
> + json_tokener_free (self->tokener);
> + log_parser_free_method (s);
> +}
> +
> +LogJSONParser *
> +log_json_parser_new (void)
> +{
> + LogJSONParser *self = g_new0 (LogJSONParser, 1);
> +
> + log_parser_init_instance (&self->super);
> + self->super.super.super.free_fn = log_json_parser_free;
> + self->super.super.clone = log_json_parser_clone;
> + self->super.process = log_json_parser_process;
> +
> + self->tokener = json_tokener_new ();
> + self->serialized.key = g_string_new (NULL);
> + self->serialized.value = g_string_new (NULL);
> +
> + return self;
> +}
> diff --git a/modules/jsonparser/jsonparser.h b/modules/jsonparser/jsonparser.h
> new file mode 100644
> index 0000000..3f6796a
> --- /dev/null
> +++ b/modules/jsonparser/jsonparser.h
> @@ -0,0 +1,33 @@
> +/*
> + * Copyright (c) 2011 BalaBit IT Ltd, Budapest, Hungary
> + * Copyright (c) 2011 Gergely Nagy <algernon at balabit.hu>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 as published
> + * by the Free Software Foundation, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> + *
> + * As an additional exemption you are allowed to compile & link against the
> + * OpenSSL libraries as published by the OpenSSL project. See the file
> + * COPYING for details.
> + */
> +
> +#ifndef JSONPARSER_H_INCLUDED
> +#define JSONPARSER_H_INCLUDED
> +
> +#include "logparser.h"
> +
> +typedef struct _LogJSONParser LogJSONParser;
> +
> +void log_json_parser_set_prefix(LogParser *p, const gchar *prefix);
> +LogJSONParser *log_json_parser_new(void);
> +
> +#endif
> diff --git a/modules/tfjson/Makefile.am b/modules/tfjson/Makefile.am
> index 5d80564..2387366 100644
> --- a/modules/tfjson/Makefile.am
> +++ b/modules/tfjson/Makefile.am
> @@ -1,7 +1,7 @@
> moduledir = @moduledir@
> export top_srcdir
>
> -if ENABLE_JSON
> +if ENABLE_JSON_FORMAT
> AM_CPPFLAGS = -I$(top_srcdir)/lib -I../../lib $(JSON_CFLAGS)
> module_LTLIBRARIES = libtfjson.la
>
--
Bazsi
More information about the syslog-ng
mailing list