X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Flogfile.c;h=2b546ac07bfc8c0a116730a455b357d399695a3e;hb=4438c61e3f0656b50867753312a011ba737cc649;hp=d251284ba1ed89b22d976002ada5e635c4e09ee3;hpb=7b08f89792c84c47b824cd4a7309c948819915fe;p=collectd.git diff --git a/src/logfile.c b/src/logfile.c index d251284b..2b546ac0 100644 --- a/src/logfile.c +++ b/src/logfile.c @@ -1,6 +1,7 @@ /** * 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 @@ -35,11 +36,13 @@ static int log_level = LOG_INFO; 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); @@ -66,16 +69,15 @@ static int logfile_config (const char *key, const char *value) } else if (0 == strcasecmp (key, "File")) { sfree (log_file); - - if (access (value, W_OK) == 0) - log_file = strdup (value); - else { - char errbuf[1024]; - /* We can't use `ERROR' yet.. */ - fprintf (stderr, "logfile plugin: Access to %s denied: %s\n", - value, sstrerror (errno, errbuf, sizeof (errbuf))); - return 1; - } + 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; @@ -87,10 +89,23 @@ static void logfile_log (int severity, const char *msg) { 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)) @@ -112,7 +127,11 @@ static void logfile_log (int severity, const char *msg) } 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); } @@ -127,7 +146,6 @@ void module_register (void) plugin_register_config ("logfile", logfile_config, config_keys, config_keys_num); plugin_register_log ("logfile", logfile_log); - return; } /* void module_register (void) */ /* vim: set sw=4 ts=4 tw=78 noexpandtab : */