Add date formatting capability for logger (bug #1665)
authorMark Spencer <markster@digium.com>
Tue, 18 May 2004 05:47:27 +0000 (05:47 +0000)
committerMark Spencer <markster@digium.com>
Tue, 18 May 2004 05:47:27 +0000 (05:47 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2999 65c4cc65-6c06-0410-ace0-fbb531ad65f3

configs/logger.conf.sample
logger.c

index 66f0613..ed48ed6 100755 (executable)
@@ -3,6 +3,13 @@
 ;
 ; In this file, you configure logging to files or to
 ; the syslog system.
+
+[general]
+; Customize the display of debug message time stamps
+; this example is the ISO 8601 date format (yyyy-mm-dd HH:MM:SS)
+; see strftime(3) Linux manual for format specifiers
+;dateformat=%F %T
+
 ;
 ; For each file, specify what to log.
 ;
index fa73477..331ca66 100755 (executable)
--- a/logger.c
+++ b/logger.c
@@ -48,6 +48,7 @@ static int syslog_level_map[] = {
 
 #define MAX_MSG_QUEUE 200
 
+static char dateformat[256] = "%b %e %T";              /* Original Asterisk Format */
 static ast_mutex_t msglist_lock = AST_MUTEX_INITIALIZER;
 static ast_mutex_t loglock = AST_MUTEX_INITIALIZER;
 static int pending_logger_reload = 0;
@@ -186,6 +187,7 @@ static void init_logger_chain(void)
        struct logchannel *chan, *cur;
        struct ast_config *cfg;
        struct ast_variable *var;
+       char *s;
 
        /* delete our list of log channels */
        ast_mutex_lock(&loglock);
@@ -208,6 +210,9 @@ static void init_logger_chain(void)
            return;
 
        ast_mutex_lock(&loglock);
+       if ((s = ast_variable_retrieve(cfg, "general", "dateformat"))) {
+               (void)strncpy(dateformat,s,sizeof(dateformat));
+       }
        var = ast_variable_browse(cfg, "logfiles");
        while(var) {
                chan = make_logchannel(var->name, var->value, var->lineno);
@@ -466,7 +471,7 @@ void ast_log(int level, const char *file, int line, const char *function, const
 
     time(&t);
     localtime_r(&t, &tm);
-    strftime(date, sizeof(date), "%b %e %T", &tm);
+    strftime(date, sizeof(date), dateformat, &tm);
 
 
     if (level == __LOG_EVENT) {