Code

perl plugin: Exported plugin_log() to Perl.
authorSebastian Harl <sh@tokkee.org>
Tue, 10 Apr 2007 22:27:54 +0000 (00:27 +0200)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Wed, 11 Apr 2007 06:46:18 +0000 (08:46 +0200)
This adds the following function to collectd's Perl API:

Collectd::plugin_log:
  pass a message to collectd's logging mechanism

  arguments:
  level - log level
  message - log message

The log level should be any of the Collectd::LOG_* constants.

Signed-off-by: Sebastian Harl <sh@tokkee.org>
src/collectd.pod
src/perl.c

index 08524901d982a7357075f31fa75906880e3e0fa7..6d29804981e4b72ec04b0a40bfbc35b31a113f91 100644 (file)
@@ -76,6 +76,10 @@ NFS utilization (I<nfs>, Linux only)
 
 =item
 
+Embedded Perl interpreter (I<perl>)
+
+=item
+
 Network latency (I<ping>)
 
 =item
@@ -269,10 +273,10 @@ I<5.2.4. Server Status Variables> for an explanation of these values.
 =head2 perl
 
 The C<perl plugin> includes a Perl-interpreter in collectd and provides
-Perl-equvalents of the plugin-functions. This makes it possible to write
+Perl-equivalents of the plugin-functions. This makes it possible to write
 plugins in Perl.
 
-There are two more comlex types you need to know about:
+There are two more complex types you need to know about:
 
 =over 4
 
@@ -345,7 +349,7 @@ array-reference which points to an array of hashes. Each hash describes one
 data-source. For the exact layout see B<Data-Set> above.
 
 If the I<type> argument is any of the other types (B<TYPE_INIT>, B<TYPE_READ>,
-...) when I<data> is expected to be a funtion reference. These functions are
+...) then I<data> is expected to be a function reference. These functions are
 called in the various stages of the daemon and are passed the following
 arguments:
 
@@ -388,7 +392,8 @@ registered with the daemon.
 
 =item B<plugin_log> (I<log-level>, I<message>)
 
-TODO.
+Submits a I<message> of level I<log-level> to collectd's logging mechanism.
+The message is passed to all log-callbacks that are registered with collectd.
 
 =back
 
index 0c5e8829556c17b70a1e62ca4604ba454f4de7cd..294f69a29018207dd28c2f8b32b5026bd52c73a0 100644 (file)
@@ -56,6 +56,7 @@ void boot_DynaLoader (PerlInterpreter *, CV *);
 static XS (Collectd_plugin_register);
 static XS (Collectd_plugin_unregister);
 static XS (Collectd_plugin_dispatch_values);
+static XS (Collectd_plugin_log);
 
 
 /*
@@ -101,6 +102,7 @@ static struct {
        { "Collectd::plugin_register",        Collectd_plugin_register },
        { "Collectd::plugin_unregister",      Collectd_plugin_unregister },
        { "Collectd::plugin_dispatch_values", Collectd_plugin_dispatch_values },
+       { "Collectd::plugin_log",             Collectd_plugin_log },
        { "", NULL }
 };
 
@@ -825,7 +827,6 @@ static XS (Collectd_plugin_dispatch_values)
 
        dXSARGS;
 
-       items = 2;
        if (2 != items) {
                log_err ("Usage: Collectd::plugin_dispatch_values(name, values)");
                XSRETURN_EMPTY;
@@ -853,6 +854,30 @@ static XS (Collectd_plugin_dispatch_values)
                XSRETURN_EMPTY;
 } /* static XS (Collectd_plugin_dispatch_values) */
 
+/*
+ * Collectd::plugin_log (level, message).
+ *
+ * level:
+ *   log level (LOG_DEBUG, ... LOG_ERR)
+ *
+ * message:
+ *   log message
+ */
+static XS (Collectd_plugin_log)
+{
+       dXSARGS;
+
+       if (2 != items) {
+               log_err ("Usage: Collectd::plugin_log(level, message)");
+               XSRETURN_EMPTY;
+       }
+
+       log_debug ("Collectd::plugin_log: level = %i, message = \"%s\"",
+                       SvIV (ST (0)), SvPV_nolen (ST (1)));
+       plugin_log (SvIV (ST (0)), SvPV_nolen (ST (1)));
+       XSRETURN_YES;
+} /* static XS (Collectd_plugin_log) */
+
 /*
  * Collectd::bootstrap ().
  */