]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
write_log plugin: Update to the new interfaces of format_{graphite,json}.
authorFlorian Forster <octo@google.com>
Wed, 24 Jun 2020 20:32:31 +0000 (22:32 +0200)
committerFlorian Forster <octo@google.com>
Wed, 29 Jul 2020 11:40:03 +0000 (13:40 +0200)
src/write_log.c

index 9570bc6f92e59105c9946eb2341db14291bc4b7b..abe0f9af33771f52fd00a24784f5a7bb30909234 100644 (file)
 
 #include "utils/format_graphite/format_graphite.h"
 #include "utils/format_json/format_json.h"
+#include "utils/strbuf/strbuf.h"
 
 #include <netdb.h>
 
-#define WL_BUF_SIZE 16384
-
 #define WL_FORMAT_GRAPHITE 1
 #define WL_FORMAT_JSON 2
 
 /* Plugin:WriteLog has to also operate without a config, so use a global. */
 int wl_format = WL_FORMAT_GRAPHITE;
 
-static int wl_write_graphite(const metric_t *metric_p) {
-  char buffer[WL_BUF_SIZE] = {0};
-  int status;
-
-  status = format_graphite(buffer, sizeof(buffer), metric_p, NULL, NULL, '_', 0);
-  if (status != 0) /* error message has been printed already. */
-    return status;
-
-  INFO("write_log values:\n%s", buffer);
+static int wl_write_graphite(metric_single_t const *m) {
+  char const *prefix = "";
+  char const *suffix = "";
+  char escape_char = '_';
+  unsigned int flags = 0;
+
+  strbuf_t buf = STRBUF_CREATE;
+  int status = format_graphite(&buf, m, prefix, suffix, escape_char, flags);
+  if (status != 0) {
+    ERROR("write_log plugin: format_graphite failed: %d", status);
+  } else {
+    INFO("write_log values:\n%s", buf.ptr);
+  }
 
+  STRBUF_DESTROY(buf);
   return 0;
 } /* int wl_write_graphite */
 
-static int wl_write_json(const metric_t *metric_p) {
-  char buffer[WL_BUF_SIZE] = {0};
-  size_t bfree = sizeof(buffer);
-  size_t bfill = 0;
-
-  format_json_initialize(buffer, &bfill, &bfree);
-  format_json_metric(buffer, &bfill, &bfree, metric_p,
-                         /* store rates = */ 0);
-  format_json_finalize(buffer, &bfill, &bfree);
+static int wl_write_json(metric_single_t const *m) {
+  strbuf_t buf = STRBUF_CREATE;
 
-  INFO("write_log values:\n%s", buffer);
+  int status = format_json_metric(&buf, m, /* store rates = */ false);
+  if (status != 0) {
+    ERROR("write_log plugin: format_json_metric failed: %d", status);
+  } else {
+    INFO("write_log values:\n%s", buf.ptr);
+  }
 
+  STRBUF_DESTROY(buf);
   return 0;
 } /* int wl_write_json */
 
-static int wl_write(const metric_t *metric_p,
+static int wl_write(metric_single_t const *m,
                     __attribute__((unused)) user_data_t *user_data) {
   int status = 0;
 
   if (wl_format == WL_FORMAT_GRAPHITE) {
-    status = wl_write_graphite(metric_p);
+    status = wl_write_graphite(m);
   } else if (wl_format == WL_FORMAT_JSON) {
-    status = wl_write_json(metric_p);
+    status = wl_write_json(m);
   }
 
   return status;