]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
update logger code
authorAnthony Minessale <anthony.minessale@gmail.com>
Tue, 4 Dec 2007 22:36:05 +0000 (22:36 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Tue, 4 Dec 2007 22:36:05 +0000 (22:36 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6504 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_voicemail/mod_voicemail.c
src/mod/loggers/mod_logfile/mod_logfile.c
src/mod/loggers/mod_syslog/mod_syslog.c

index 411f8ea0f07c131aa20528de775df42a73e33e3b..eceeb3e0a8ed2de2f47111e4530ced688e4af972 100644 (file)
@@ -1140,7 +1140,7 @@ static switch_status_t listen_file(switch_core_session_t *session, vm_profile_t
                     message_count(profile, cbt->user, cbt->domain, cbt->in_folder, &total_new_messages, &total_saved_messages,
                                   &total_new_urgent_messages, &total_saved_urgent_messages);
 
-                    switch_time_exp_lt(&tm, atoi(cbt->created_epoch));
+                    switch_time_exp_lt(&tm, atoi(cbt->created_epoch) * 1000000);
                     switch_strftime(date, &retsize, sizeof(date), profile->date_fmt, &tm);
 
                     snprintf(tmp,sizeof(tmp), "%d", total_new_messages);
index da672757f89430d40851f8b26228b1eec722da72..396b2805c28d6aa230a572a443d572dd817deac3 100644 (file)
@@ -38,7 +38,7 @@ SWITCH_MODULE_DEFINITION(mod_logfile, mod_logfile_load, mod_logfile_shutdown, NU
 \r
 #define DEFAULT_FORMAT   "${data}" \r
 #define DEFAULT_LIMIT    0x7FFFFFFF\r
-#define WARM_FUZZY_OFFSET 64\r
+#define WARM_FUZZY_OFFSET 256\r
 #define MAX_ROT 4096 /* why not */\r
 static const uint8_t STATIC_LEVELS[] = {0, 1, 2, 3, 4, 5, 6, 7, 8};\r
 \r
@@ -107,21 +107,52 @@ void process_levels(char *p)
        return;\r
 }\r
 \r
+static switch_status_t mod_logfile_rotate(void);\r
+\r
+static switch_status_t mod_logfile_openlogfile(switch_bool_t check)\r
+{\r
+       unsigned int flags = 0;\r
+       switch_file_t *afd;\r
+       switch_status_t stat;\r
+\r
+       flags |= SWITCH_FOPEN_CREATE;\r
+       flags |= SWITCH_FOPEN_READ;\r
+       flags |= SWITCH_FOPEN_WRITE;\r
+       flags |= SWITCH_FOPEN_APPEND;\r
+\r
+       stat = switch_file_open(&afd, globals.logfile, flags, SWITCH_FPROT_UREAD|SWITCH_FPROT_UWRITE, module_pool);\r
+       if (stat != SWITCH_STATUS_SUCCESS) {\r
+               return SWITCH_STATUS_FALSE;\r
+       }\r
+\r
+       globals.log_afd = afd;\r
+\r
+       globals.log_size = switch_file_get_size(globals.log_afd);\r
+\r
+       if (check && globals.log_size >= globals.roll_size) {\r
+               mod_logfile_rotate();\r
+       }\r
+\r
+       return SWITCH_STATUS_SUCCESS;\r
+}\r
+\r
+\r
 /* rotate the log file */\r
 static switch_status_t mod_logfile_rotate(void)\r
 {\r
        unsigned int i = 0;\r
-       unsigned int flags = 0;\r
        char *p = NULL;\r
-       char *q = NULL;\r
        switch_status_t stat = 0;\r
-       switch_size_t   nbytes = 1024;\r
-       switch_file_t *l_afd = NULL;\r
-       switch_memory_pool_t *pool = NULL;\r
        int64_t offset = 0;\r
+    switch_memory_pool_t *pool;\r
+    switch_time_exp_t tm;\r
+    char date[80] = "";\r
+    switch_size_t retsize;\r
+\r
+    switch_time_exp_lt(&tm, switch_time_now());\r
+    switch_strftime(date, &retsize, sizeof(date), "%Y-%m-%d-%H-%M-%S", &tm);\r
 \r
        globals.log_size = 0;\r
-       switch_core_new_memory_pool(&pool);   \r
 \r
        stat = switch_file_seek(globals.log_afd, SWITCH_SEEK_SET, &offset);\r
 \r
@@ -129,78 +160,34 @@ static switch_status_t mod_logfile_rotate(void)
                return SWITCH_STATUS_FALSE;\r
 \r
        p = malloc(strlen(globals.logfile)+WARM_FUZZY_OFFSET);\r
-       if (!p) {\r
-               return SWITCH_STATUS_FALSE;\r
-       }\r
-\r
-       q = malloc(1024);\r
-       if (!q) {\r
-               free(p);\r
-               return SWITCH_STATUS_FALSE;\r
-       }\r
+    assert(p);\r
 \r
        memset(p, '\0', strlen(globals.logfile)+WARM_FUZZY_OFFSET);\r
 \r
+    switch_core_new_memory_pool(&pool);\r
+    \r
        for (i=1; i < MAX_ROT; i++) {\r
-               sprintf((char *)p, "%s.%i", globals.logfile, i);\r
-\r
-               stat = switch_file_open(&l_afd, p, SWITCH_FOPEN_READ, SWITCH_FPROT_UREAD, pool);\r
-\r
-               if (stat == SWITCH_STATUS_SUCCESS) {\r
-                       switch_file_close(l_afd);\r
-                       continue;\r
-               }\r
-               flags |= SWITCH_FOPEN_READ;\r
-               flags |= SWITCH_FOPEN_WRITE;\r
-               flags |= SWITCH_FOPEN_CREATE;\r
-\r
-               stat = switch_file_open(&l_afd, p, flags , SWITCH_FPROT_UREAD | SWITCH_FPROT_UWRITE ,pool);\r
-               if (stat == SWITCH_STATUS_SUCCESS)\r
-                       break;\r
+               sprintf((char *)p, "%s.%s.%i", globals.logfile, date, i);\r
+        if (switch_file_exists(p, pool) == SWITCH_STATUS_SUCCESS) {\r
+            continue;\r
+        }\r
+        \r
+        switch_file_close(globals.log_afd);\r
+        switch_file_rename(globals.logfile, p, pool);\r
+        mod_logfile_openlogfile(SWITCH_FALSE);\r
+        break;\r
        }\r
 \r
-       while ((stat = switch_file_read(globals.log_afd, q, &nbytes)) == SWITCH_STATUS_SUCCESS) {\r
-               switch_file_write(l_afd, q, &nbytes);\r
-               memset(q, '\0', 1024);\r
-               nbytes = 1024;\r
-       }\r
-\r
-       offset = 0;\r
-       stat = switch_file_seek(globals.log_afd, SWITCH_SEEK_SET, &offset);\r
        free(p);\r
-       free(q);\r
-       return SWITCH_STATUS_SUCCESS;\r
-}\r
-\r
-static switch_status_t mod_logfile_openlogfile(void)\r
-{\r
-       unsigned int flags = 0;\r
-       switch_file_t *afd;\r
-       switch_status_t stat;\r
-       switch_memory_pool_t *pool;\r
-\r
-       flags |= SWITCH_FOPEN_CREATE;\r
-       flags |= SWITCH_FOPEN_READ;\r
-       flags |= SWITCH_FOPEN_WRITE;\r
-       flags |= SWITCH_FOPEN_APPEND;\r
-\r
-       switch_core_new_memory_pool(&pool);       \r
-       stat = switch_file_open(&afd, globals.logfile,flags,SWITCH_FPROT_UREAD|SWITCH_FPROT_UWRITE, pool);\r
-       if (stat != SWITCH_STATUS_SUCCESS) {\r
-               return SWITCH_STATUS_FALSE;\r
-       }\r
-\r
-       globals.log_afd = afd;\r
-\r
-       globals.log_size = switch_file_get_size(globals.log_afd);\r
+    \r
 \r
-       if (globals.log_size >= globals.roll_size) {\r
-               mod_logfile_rotate();\r
-       }\r
+    switch_core_destroy_memory_pool(&pool);\r
 \r
        return SWITCH_STATUS_SUCCESS;\r
 }\r
 \r
+\r
+#if 0\r
 /* write to the actual logfile */\r
 static switch_status_t mod_logfile_write(char *fmt, ...) \r
 {\r
@@ -219,47 +206,43 @@ static switch_status_t mod_logfile_write(char *fmt, ...)
 \r
        globals.log_size += len;\r
 \r
-       /* we may want to hold back on this for preformance reasons */\r
        if (globals.log_size >= globals.roll_size) {\r
                mod_logfile_rotate();\r
        }\r
 \r
        return SWITCH_STATUS_SUCCESS;\r
 }\r
+#endif\r
 \r
-static switch_status_t mod_logfile_logger(const switch_log_node_t *node, switch_log_level_t level)\r
+/* write to the actual logfile */\r
+static switch_status_t mod_logfile_raw_write(char *log_data) \r
 {\r
-       char line_no[sizeof(int)*8+1];\r
-       char date[80] = "";\r
-       switch_time_exp_t time;\r
-       switch_size_t retsize;\r
-       char *message = NULL;\r
-\r
-       if (!levels[node->level].on) {\r
-               return SWITCH_STATUS_SUCCESS;\r
-       }\r
+       switch_size_t len;\r
+       len = strlen(log_data);\r
 \r
-       message = (char *)malloc(strlen(globals.format)+2);\r
-       switch_copy_string(message, globals.format, strlen(globals.format)+1);\r
+       if (len <= 0)\r
+               return SWITCH_STATUS_FALSE;\r
 \r
-       message = switch_string_replace(message, "${message}", node->content);\r
+       if (switch_file_write(globals.log_afd, log_data, &len) != SWITCH_STATUS_SUCCESS) {\r
+        switch_file_close(globals.log_afd);\r
+        mod_logfile_openlogfile(SWITCH_TRUE);\r
+    }\r
+    \r
+       globals.log_size += len;\r
 \r
-       if (switch_time_exp_lt(&time, node->timestamp) != SWITCH_STATUS_SUCCESS) {\r
-               return SWITCH_STATUS_FALSE;\r
+       if (globals.log_size >= globals.roll_size) {\r
+               mod_logfile_rotate();\r
        }\r
 \r
-       switch_strftime(date, &retsize, sizeof(date), "%Y-%m-%d %T", &time);\r
-\r
-       message = switch_string_replace(message, "${time}", date);\r
-       message = switch_string_replace(message, "${file}", node->file);\r
-       message = switch_string_replace(message, "${func}", node->func);\r
+       return SWITCH_STATUS_SUCCESS;\r
+}\r
 \r
-       snprintf(line_no, sizeof(line_no), "%d", node->line);\r
-       message = switch_string_replace(message, "${line}", line_no);\r
+static switch_status_t mod_logfile_logger(const switch_log_node_t *node, switch_log_level_t level)\r
+{\r
 \r
-       if (!switch_strlen_zero(message)) {\r
-               mod_logfile_write("%s", message);\r
-       }\r
+       if (levels[node->level].on) {\r
+        mod_logfile_raw_write(node->data);\r
+    }\r
 \r
        return SWITCH_STATUS_SUCCESS;\r
 }\r
@@ -316,7 +299,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_logfile_load)
                return status;\r
        }\r
 \r
-       mod_logfile_openlogfile();\r
+       mod_logfile_openlogfile(SWITCH_TRUE);\r
 \r
        switch_log_bind_logger(mod_logfile_logger, SWITCH_LOG_DEBUG);\r
 \r
index 829f3e1eafe8f9228201f398403edbcc76fdcf31..8425afd6002f60c1d6fccd9b1799834ef1a4024c 100644 (file)
@@ -69,31 +69,8 @@ static switch_loadable_module_interface_t console_module_interface = {
 static switch_status_t mod_syslog_logger(const switch_log_node_t *node, switch_log_level_t level)
 {
        char *message = NULL;
-       char line_no[sizeof(int) * 8 + 1];
-       char date[80] = "";
-       switch_time_exp_t time;
-       switch_size_t retsize;
        int syslog_level;
 
-       message = (char *) malloc(strlen(globals.format) + 2);
-
-       switch_copy_string(message, globals.format, strlen(globals.format) + 1);
-
-       message = switch_string_replace(message, "${message}", node->content);
-
-       if (switch_time_exp_lt(&time, node->timestamp) != SWITCH_STATUS_SUCCESS) {
-               return SWITCH_STATUS_FALSE;
-       }
-
-       switch_strftime(date, &retsize, sizeof(date), "%Y-%m-%d %T", &time);
-       message = switch_string_replace(message, "${time}", date);
-
-       message = switch_string_replace(message, "${file}", node->file);
-       message = switch_string_replace(message, "${func}", node->func);
-
-       snprintf(line_no, sizeof(line_no), "%d", node->line);
-       message = switch_string_replace(message, "${line}", line_no);
-
        switch (level) {
                case SWITCH_LOG_DEBUG:
                        syslog_level = LOG_DEBUG;
@@ -122,10 +99,10 @@ static switch_status_t mod_syslog_logger(const switch_log_node_t *node, switch_l
        }
 
        if (!switch_strlen_zero(message)) {
-               syslog(syslog_level, "%s", message);
+               syslog(syslog_level, "%s", node->data);
        }
 
-       free(message);
+
 
        return SWITCH_STATUS_SUCCESS;
 }