]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merge Brian West's append hostname patch (bug #2372)
authorMark Spencer <markster@digium.com>
Sun, 5 Sep 2004 03:48:05 +0000 (03:48 +0000)
committerMark Spencer <markster@digium.com>
Sun, 5 Sep 2004 03:48:05 +0000 (03:48 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3725 65c4cc65-6c06-0410-ace0-fbb531ad65f3

configs/logger.conf.sample
logger.c

index ed48ed627b0f499f0a9036620f7cf21e3ed032f8..bf28f2f4080a103e865fc0ce53f1a7aa2b1c4fcd 100755 (executable)
@@ -9,7 +9,10 @@
 ; 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
-
+;
+; This appends the hostname to the name of the log files.
+;appendhostname = yes
+;
 ;
 ; For each file, specify what to log.
 ;
index 480d64fc3e792b152c7dfe61b85c2603d97e8427..25bf5d3d0ee79777a2561539be7610026d17adf9 100755 (executable)
--- a/logger.c
+++ b/logger.c
@@ -58,6 +58,8 @@ static struct msglist {
        struct msglist *next;
 } *list = NULL, *last = NULL;
 
+static char hostname[256];
+
 struct logchannel {
        int logmask;
        int facility; /* syslog */
@@ -167,10 +169,19 @@ static struct logchannel *make_logchannel(char *channel, char *components, int l
                    chan->syslog = 1;
                    openlog("asterisk", LOG_PID, chan->facility);
                } else {
-                       if (channel[0] == '/') 
-                               strncpy(chan->filename, channel, sizeof(chan->filename) - 1);
-                       else
+                       if (channel[0] == '/') {
+                               if(!ast_strlen_zero(hostname)) { 
+                                       snprintf(chan->filename, sizeof(chan->filename) - 1,"%s.%s", channel, hostname);
+                               } else {
+                                       strncpy(chan->filename, channel, sizeof(chan->filename) - 1);
+                               }
+                       }                 
+                       
+                       if(!ast_strlen_zero(hostname)) {
+                               snprintf(chan->filename, sizeof(chan->filename), "%s/%s.%s",(char *)ast_config_AST_LOG_DIR, channel, hostname);
+                       } else {
                                snprintf(chan->filename, sizeof(chan->filename), "%s/%s", (char *)ast_config_AST_LOG_DIR, channel);
+                       }
                        chan->fileptr = fopen(chan->filename, "a");
                        if (!chan->fileptr) {
                                /* Can't log here, since we're called with a lock */
@@ -199,20 +210,31 @@ static void init_logger_chain(void)
        }
        logchannels = NULL;
        ast_mutex_unlock(&loglock);
-
+       
        /* close syslog */
        closelog();
-
+       
        cfg = ast_load("logger.conf");
        
        /* If no config file, we're fine */
        if (!cfg)
            return;
-
+       
        ast_mutex_lock(&loglock);
+       if ((s = ast_variable_retrieve(cfg, "general", "appendhostname"))) {
+               if(ast_true(s)) {
+                       if(gethostname(hostname, sizeof(hostname))) {
+                               strncpy(hostname, "unknown", sizeof(hostname)-1);
+                               ast_log(LOG_WARNING, "What box has no hostname???\n");
+                       }
+               } else
+                       hostname[0] = '\0';
+       } else
+               hostname[0] = '\0';
        if ((s = ast_variable_retrieve(cfg, "general", "dateformat"))) {
                strncpy(dateformat, s, sizeof(dateformat) - 1);
-       }
+       } else
+               strncpy(dateformat, "%b %e %T", sizeof(dateformat) - 1);
        var = ast_variable_browse(cfg, "logfiles");
        while(var) {
                chan = make_logchannel(var->name, var->value, var->lineno);