some platforms (e.g. FreeBSD4) need netinet/in.h to be included
[asterisk/asterisk.git] / main / logger.c
index 83cdef3..eb7ceeb 100644 (file)
  * \author Mark Spencer <markster@digium.com>
  */
 
+/*
+ * define _ASTERISK_LOGGER_H to prevent the inclusion of logger.h;
+ * it redefines LOG_* which we need to define syslog_level_map.
+ * Later, we force the inclusion of logger.h again.
+ */
+#define _ASTERISK_LOGGER_H
 #include "asterisk.h"
 
 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
+#include "asterisk/_private.h"
+#include "asterisk/paths.h"    /* use ast_config_AST_LOG_DIR */
 #include <signal.h>
 #include <time.h>
-#include <errno.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #if ((defined(AST_DEVMODE)) && (defined(linux)))
@@ -55,9 +62,9 @@ static int syslog_level_map[] = {
 
 #define SYSLOG_NLEVELS sizeof(syslog_level_map) / sizeof(int)
 
+#undef _ASTERISK_LOGGER_H      /* now include logger.h */
 #include "asterisk/logger.h"
 #include "asterisk/lock.h"
-#include "asterisk/options.h"
 #include "asterisk/channel.h"
 #include "asterisk/config.h"
 #include "asterisk/term.h"
@@ -66,7 +73,6 @@ static int syslog_level_map[] = {
 #include "asterisk/manager.h"
 #include "asterisk/threadstorage.h"
 #include "asterisk/strings.h"
-#include "asterisk/channel.h"
 #include "asterisk/pbx.h"
 
 #if defined(__linux__) && !defined(__NR_gettid)
@@ -142,6 +148,7 @@ static int close_logger_thread;
 static FILE *eventlog;
 static FILE *qlog;
 
+/*! \brief Logging channels used in the Asterisk logging system */
 static char *levels[] = {
        "DEBUG",
        "EVENT",
@@ -152,6 +159,7 @@ static char *levels[] = {
        "DTMF"
 };
 
+/*! \brief Colors used in the console for logging */
 static int colors[] = {
        COLOR_BRGREEN,
        COLOR_BRBLUE,
@@ -508,7 +516,7 @@ static int rotate_file(const char *filename)
        return res;
 }
 
-int reload_logger(int rotate)
+static int reload_logger(int rotate)
 {
        char old[PATH_MAX] = "";
        int event_rotate = rotate, queue_rotate = rotate;
@@ -610,6 +618,15 @@ int reload_logger(int rotate)
        return res;
 }
 
+/*! \brief Reload the logger module without rotating log files (also used from loader.c during
+       a full Asterisk reload) */
+int logger_reload(void)
+{
+       if(reload_logger(0))
+               return RESULT_FAILURE;
+       return RESULT_SUCCESS;
+}
+
 static char *handle_logger_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        switch (cmd) {
@@ -625,8 +642,8 @@ static char *handle_logger_reload(struct ast_cli_entry *e, int cmd, struct ast_c
        if (reload_logger(0)) {
                ast_cli(a->fd, "Failed to reload the logger\n");
                return CLI_FAILURE;
-       } else
-               return CLI_SUCCESS;
+       }
+       return CLI_SUCCESS;
 }
 
 static char *handle_logger_rotate(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
@@ -644,8 +661,8 @@ static char *handle_logger_rotate(struct ast_cli_entry *e, int cmd, struct ast_c
        if (reload_logger(1)) {
                ast_cli(a->fd, "Failed to reload the logger and rotate log files\n");
                return CLI_FAILURE;
-       } else
-               return CLI_SUCCESS;
+       } 
+       return CLI_SUCCESS;
 }
 
 /*! \brief CLI command to show logging system configuration */
@@ -739,7 +756,7 @@ static void ast_log_vsyslog(int level, const char *file, int line, const char *f
         syslog(syslog_level_map[level], "%s", buf);
 }
 
-/* Print a normal log message to the channels */
+/*! \brief Print a normal log message to the channels */
 static void logger_print_normal(struct logmsg *logmsg)
 {
        struct logchannel *chan = NULL;
@@ -825,7 +842,7 @@ static void logger_print_normal(struct logmsg *logmsg)
        return;
 }
 
-/* Print a verbose message to the verbosers */
+/*! \brief Print a verbose message to the verbosers */
 static void logger_print_verbose(struct logmsg *logmsg)
 {
        struct verb *v = NULL;
@@ -839,7 +856,7 @@ static void logger_print_verbose(struct logmsg *logmsg)
        return;
 }
 
-/* Actual logging thread */
+/*! \brief Actual logging thread */
 static void *logger_thread(void *data)
 {
        struct logmsg *next = NULL, *msg = NULL;
@@ -1098,7 +1115,7 @@ void ast_verbose(const char *fmt, ...)
                 char date[40];
                 char *datefmt;
 
-                               tv = ast_tvnow();
+               tv = ast_tvnow();
                 ast_localtime(&tv, &tm, NULL);
                 ast_strftime(date, sizeof(date), dateformat, &tm);
                 datefmt = alloca(strlen(date) + 3 + strlen(fmt) + 1);