static gboolean tf_graphite_prepare(LogTemplateFunction *self, gpointer s, LogTemplate *parent, gint argc, gchar *argv[], GError **error) { TFGraphiteState *state = (TFGraphiteState *)s; ValuePairsTransformSet *vpts; if (!tf_graphite_parse_command_line_arguments(state, &argc, &argv, parent)) return FALSE; if (!state->timestamp_template) { state->timestamp_template = log_template_new(parent->cfg, "graphite_timestamp_template"); log_template_compile(state->timestamp_template, "$R_UNIXTIME", NULL); } state->vp = value_pairs_new_from_cmdline (parent->cfg, argc, argv, error); if (!state->vp) return FALSE; /* Always replace a leading dot with an underscore. */ vpts = value_pairs_transform_set_new(".*"); value_pairs_transform_set_add_func(vpts, value_pairs_new_transform_replace_prefix(".", "_")); value_pairs_add_transforms(state->vp, vpts); return TRUE; }
static gboolean tf_json_prepare(LogTemplateFunction *self, gpointer s, LogTemplate *parent, gint argc, gchar *argv[], GError **error) { TFJsonState *state = (TFJsonState *)s; ValuePairsTransformSet *vpts; gboolean transform_initial_dot; state->vp = value_pairs_new_from_cmdline (parent->cfg, &argc, &argv, TRUE, error); if (!state->vp) return FALSE; if (!_parse_additional_options(argc, argv, &transform_initial_dot, error)) return FALSE; if (transform_initial_dot) { /* Always replace a leading dot with an underscore. */ vpts = value_pairs_transform_set_new(".*"); value_pairs_transform_set_add_func(vpts, value_pairs_new_transform_replace_prefix(".", "_")); value_pairs_add_transforms(state->vp, vpts); } return TRUE; }
static gboolean afmongodb_dd_init(LogPipe *s) { MongoDBDestDriver *self = (MongoDBDestDriver *)s; GlobalConfig *cfg = log_pipe_get_config(s); ValuePairsTransformSet *vpts; if (!log_dest_driver_init_method(s)) return FALSE; log_template_options_init(&self->template_options, cfg); /* Always replace a leading dot with an underscore. */ vpts = value_pairs_transform_set_new(".*"); value_pairs_transform_set_add_func(vpts, value_pairs_new_transform_replace_prefix(".", "_")); value_pairs_add_transforms(self->vp, vpts); if (self->port != MONGO_CONN_LOCAL) { if (self->address) { gchar *srv = g_strdup_printf ("%s:%d", self->address, (self->port) ? self->port : 27017); self->servers = g_list_prepend (self->servers, srv); g_free (self->address); } if (!self->servers) afmongodb_dd_set_servers((LogDriver *)self, g_list_append (NULL, g_strdup ("127.0.0.1:27017"))); self->address = NULL; self->port = 27017; if (!mongo_util_parse_addr(g_list_nth_data(self->servers, 0), &self->address, &self->port)) { msg_error("Cannot parse the primary host", evt_tag_str("primary", g_list_nth_data(self->servers, 0)), NULL); return FALSE; } } if (self->port == MONGO_CONN_LOCAL) msg_verbose("Initializing MongoDB destination", evt_tag_str("address", self->address), evt_tag_str("database", self->db), evt_tag_str("collection", self->coll), NULL); else msg_verbose("Initializing MongoDB destination", evt_tag_str("address", self->address), evt_tag_int("port", self->port), evt_tag_str("database", self->db), evt_tag_str("collection", self->coll), NULL); return log_threaded_dest_driver_start(s); }
static void afmongodb_dd_init_value_pairs_dot_to_underscore_transformation(MongoDBDestDriver *self) { ValuePairsTransformSet *vpts; /* Always replace a leading dot with an underscore. */ vpts = value_pairs_transform_set_new(".*"); value_pairs_transform_set_add_func(vpts, value_pairs_new_transform_replace_prefix(".", "_")); value_pairs_add_transforms(self->vp, vpts); }
void testcase(const gchar *scope, const gchar *exclude, const gchar *expected, GPtrArray *transformers) { ValuePairs *vp; GList *vp_keys_list = NULL; GString *vp_keys; LogMessage *msg = create_message(); gpointer args[2]; gboolean test_key_found = FALSE; vp_keys = g_string_sized_new(0); vp = value_pairs_new(); value_pairs_add_scope(vp, scope); if (exclude) value_pairs_add_glob_pattern(vp, exclude, FALSE); value_pairs_add_pair(vp, configuration, "test.key", "$MESSAGE"); if (transformers) { gint i; ValuePairsTransformSet *vpts = value_pairs_transform_set_new("*"); for (i = 0; i < transformers->len; i++) value_pairs_transform_set_add_func(vpts, g_ptr_array_index(transformers, i)); value_pairs_add_transforms(vp, (gpointer *)vpts); } args[0] = &vp_keys_list; args[1] = &test_key_found; value_pairs_foreach(vp, vp_keys_foreach, msg, 11, args); g_list_foreach(vp_keys_list, (GFunc) cat_keys_foreach, vp_keys); if (strcmp(vp_keys->str, expected) != 0) { fprintf(stderr, "Scope keys mismatch, scope=[%s], exclude=[%s], value=[%s], expected=[%s]\n", scope, exclude ? exclude : "(none)", vp_keys->str, expected); success = FALSE; } if (!test_key_found) { fprintf(stderr, "test.key is not found in the result set\n"); success = FALSE; } g_list_foreach(vp_keys_list, (GFunc) g_free, NULL); g_list_free(vp_keys_list); g_string_free(vp_keys, TRUE); log_msg_unref(msg); value_pairs_free(vp); }
static gboolean afmongodb_dd_init(LogPipe *s) { MongoDBDestDriver *self = (MongoDBDestDriver *)s; GlobalConfig *cfg = log_pipe_get_config(s); ValuePairsTransformSet *vpts; if (!log_dest_driver_init_method(s)) return FALSE; if (cfg) self->time_reopen = cfg->time_reopen; if (!self->vp) { self->vp = value_pairs_new(); value_pairs_add_scope(self->vp, "selected-macros"); value_pairs_add_scope(self->vp, "nv-pairs"); } /* Always replace a leading dot with an underscore. */ vpts = value_pairs_transform_set_new(".*"); value_pairs_transform_set_add_func(vpts, value_pairs_new_transform_replace(".", "_")); value_pairs_add_transforms(self->vp, vpts); if (self->port != MONGO_CONN_LOCAL) { if (self->address) { gchar *srv = g_strdup_printf ("%s:%d", self->address, (self->port) ? self->port : 27017); self->servers = g_list_prepend (self->servers, srv); g_free (self->address); } if (!self->servers) afmongodb_dd_set_servers((LogDriver *)self, g_list_append (NULL, g_strdup ("127.0.0.1:27017"))); self->address = NULL; self->port = 27017; if (!mongo_util_parse_addr(g_list_nth_data(self->servers, 0), &self->address, &self->port)) { msg_error("Cannot parse the primary host", evt_tag_str("primary", g_list_nth_data(self->servers, 0)), NULL); return FALSE; } } if (self->port == MONGO_CONN_LOCAL) msg_verbose("Initializing MongoDB destination", evt_tag_str("address", self->address), evt_tag_str("database", self->db), evt_tag_str("collection", self->coll), NULL); else msg_verbose("Initializing MongoDB destination", evt_tag_str("address", self->address), evt_tag_int("port", self->port), evt_tag_str("database", self->db), evt_tag_str("collection", self->coll), NULL); self->queue = log_dest_driver_acquire_queue(&self->super, afmongodb_dd_format_persist_name(self)); stats_lock(); stats_register_counter(0, SCS_MONGODB | SCS_DESTINATION, self->super.super.id, afmongodb_dd_format_stats_instance(self), SC_TYPE_STORED, &self->stored_messages); stats_register_counter(0, SCS_MONGODB | SCS_DESTINATION, self->super.super.id, afmongodb_dd_format_stats_instance(self), SC_TYPE_DROPPED, &self->dropped_messages); stats_unlock(); log_queue_set_counters(self->queue, self->stored_messages, self->dropped_messages); afmongodb_dd_start_thread(self); return TRUE; }