X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/e3002eb9f618d7498f21933a2e8552d42ffcc7fc..4852676a7d06dd6f8c100b033ca26cf3082aa65f:/lib/log.c diff --git a/lib/log.c b/lib/log.c index 3f57073..82ba377 100644 --- a/lib/log.c +++ b/lib/log.c @@ -17,17 +17,18 @@ */ /** @file lib/log.c @brief Errors and logging * - * All messages are initially emitted by one of the four functions below. - * debug() is generally invoked via D() so that mostly you just do a test - * rather than a complete subroutine call. + * All messages are initially emitted by one of the four functions + * below. disorder_debug() is generally invoked via D() so that + * mostly you just do a test rather than a complete subroutine call. * * Messages are dispatched via @ref log_default. This defaults to @ref * log_stderr. daemonize() will turn off @ref log_stderr and use @ref * log_syslog instead. * - * fatal() will call exitfn() with a nonzero status. The default value is - * exit(), but it should be set to _exit() anywhere but the 'main line' of the - * program, to guarantee that exit() gets called at most once. + * disorder_fatal() will call exitfn() with a nonzero status. The + * default value is exit(), but it should be set to _exit() anywhere + * but the 'main line' of the program, to guarantee that exit() gets + * called at most once. */ #define NO_MEMORY_ALLOCATION @@ -38,6 +39,7 @@ #include #include #include +#include #include "log.h" #include "disorder.h" @@ -66,6 +68,9 @@ const char *progname; /** @brief Filename for debug messages */ const char *debug_filename; +/** @brief Set to include timestamps in log messages */ +int logdate; + /** @brief Line number for debug messages */ int debug_lineno; @@ -119,7 +124,15 @@ static void logfp(int pri, const char *msg, void *user) { * sanely */ const char *p; - if(progname) + if(logdate) { + char timebuf[64]; + struct tm *tm; + gettimeofday(&tv, 0); + tm = localtime(&tv.tv_sec); + strftime(timebuf, sizeof timebuf, "%Y-%m-%d %H:%M:%S %Z", tm); + fprintf(fp, "%s: ", timebuf); + } + if(progname) fprintf(fp, "%s: ", progname); if(pri <= LOG_ERR) fputs("ERROR: ", fp);