An I<Identifier> is of the form
C<I<host>B</>I<plugin>B<->I<instance>B</>I<type>B<->I<instance>> with both
I<instance>-parts being optional. If they're omitted the hyphen must be
- omitted, too.
+ omitted, too. I<plugin> and each I<instance>-part may be chosen freely as long
+ as the tuple (plugin, plugin instance, type instance) uniquely identifies the
+ plugin within collectd. I<type> identifies the type and number of values
+ (i.E<nbsp>e. data-set) passed to collectd. A large list of predefined
+ data-sets is available in the B<types.db> file.
The I<OptionList> is an optional list of I<Options>, where each option if a
key-value-pair. A list of currently understood options can be found below, all
other options will be ignored.
-I<Valuelist> is a colon-seperated list of the time and the values, each either
+I<Valuelist> is a colon-separated list of the time and the values, each either
an integer if the data-source is a counter, of a double if the data-source if
of type "gauge". You can submit an undefined gauge-value by using B<U>. When
submitting B<U> to a counter the behavior is undefined. The time is given as
/**
* collectd - src/logfile.c
* Copyright (C) 2007 Sebastian Harl
+ * Copyright (C) 2007 Florian Forster
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
static pthread_mutex_t file_lock = PTHREAD_MUTEX_INITIALIZER;
static char *log_file = NULL;
+static int print_timestamp = 1;
static const char *config_keys[] =
{
"LogLevel",
- "File"
+ "File",
+ "Timestamp"
};
static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
sfree (log_file);
log_file = strdup (value);
}
+ else if (0 == strcasecmp (key, "Timestamp")) {
+ if ((strcasecmp (value, "false") == 0)
+ || (strcasecmp (value, "no") == 0)
+ || (strcasecmp (value, "off") == 0))
+ print_timestamp = 0;
+ else
+ print_timestamp = 1;
+ }
else {
return -1;
}
{
FILE *fh;
int do_close = 0;
+ time_t timestamp_time;
+ struct tm timestamp_tm;
+ char timestamp_str[64];
if (severity > log_level)
return;
+ if (print_timestamp)
+ {
+ timestamp_time = time (NULL);
+ localtime_r (×tamp_time, ×tamp_tm);
+
+ strftime (timestamp_str, sizeof (timestamp_str), "%Y-%m-%d %H:%M:%S",
+ ×tamp_tm);
+ timestamp_str[sizeof (timestamp_str) - 1] = '\0';
+ }
+
pthread_mutex_lock (&file_lock);
if ((log_file == NULL) || (strcasecmp (log_file, "stderr") == 0))
}
else
{
- fprintf (fh, "%s\n", msg);
+ if (print_timestamp)
+ fprintf (fh, "[%s] %s\n", timestamp_str, msg);
+ else
+ fprintf (fh, "%s\n", msg);
+
if (do_close != 0)
fclose (fh);
}