Author: anthonyl Date: Sun Jun 3 04:39:06 2007 New Revision: 5252 Modified: freeswitch/branches/anthonyl/log2file-branch/src/include/switch_apr.h freeswitch/branches/anthonyl/log2file-branch/src/mod/loggers/mod_log2file/mod_log2file.c Log: a fun update, the logging works which is nice ;) i had to add a def for switch_fopen_seek.. in the apr file_io.h code it just defines apr_seek as seek_set so i use that for now.. umm, i still need to work on some of the memory pool things as well as on adding some features.. but that's not to much work ;-p Modified: freeswitch/branches/anthonyl/log2file-branch/src/include/switch_apr.h ============================================================================== --- freeswitch/branches/anthonyl/log2file-branch/src/include/switch_apr.h (original) +++ freeswitch/branches/anthonyl/log2file-branch/src/include/switch_apr.h Sun Jun 3 04:39:06 2007 @@ -641,7 +641,7 @@ #define SWITCH_FOPEN_SENDFILE_ENABLED 0x01000 /**< Advisory flag that this file should support apr_socket_sendfile operation */ #define SWITCH_FOPEN_LARGEFILE 0x04000 /**< Platform dependent flag to enable large file support */ /** @} */ - +#define SWITCH_FOPEN_SET SEEK_SET /**< Set the position of the file for seeking */ /** * Open the specified file. * @param newf The opened file descriptor. Modified: freeswitch/branches/anthonyl/log2file-branch/src/mod/loggers/mod_log2file/mod_log2file.c ============================================================================== --- freeswitch/branches/anthonyl/log2file-branch/src/mod/loggers/mod_log2file/mod_log2file.c (original) +++ freeswitch/branches/anthonyl/log2file-branch/src/mod/loggers/mod_log2file/mod_log2file.c Sun Jun 3 04:39:06 2007 @@ -45,16 +45,13 @@ static switch_status_t mod_log2file_check(void); static switch_memory_pool_t *module_pool = NULL; -static switch_hash_t *log_hash = NULL; -static switch_hash_t *name_hash = NULL; -static int8_t all_level = -1; static struct { unsigned int log_fd; unsigned int log_size; /* keep the log size in check for rotation */ unsigned int roll_size; /* the size that we want to rotate the file at */ - unsigned char *logfile; - unsigned char *format; + char *logfile; + char *format; switch_file_t *log_afd; } globals; @@ -131,7 +128,7 @@ { char *q; - while (q = strsep(&p, ",")) { + while ((q = strsep(&p, ","))) { if (!strncasecmp(q, "emerg", strlen(q))) { levels[SWITCH_LOG_EMERG].on = 1; } else if (!strncasecmp(q, "alert", strlen(q))) { @@ -163,37 +160,45 @@ } static switch_status_t mod_log2file_openlogfile(void) { - int fd; + unsigned int flags = 0; switch_file_t *afd; switch_status_t stat; + switch_memory_pool_t *pool; - stat = switch_file_open(&afd, globals.logfile, - APR_CREATE| APR_READ | APR_WRITE | APR_APPEND, NULL, NULL); - + + flags |= SWITCH_FOPEN_CREATE; + flags |= SWITCH_FOPEN_READ; + flags |= SWITCH_FOPEN_WRITE; + flags |= SWITCH_FOPEN_APPEND; + + switch_core_new_memory_pool(&pool); + stat = switch_file_open(&afd, globals.logfile,flags,SWITCH_FPROT_UREAD|SWITCH_FPROT_UWRITE, pool); if (stat != SWITCH_STATUS_SUCCESS) { return SWITCH_STATUS_FALSE; } globals.log_afd = afd; mod_log2file_check(); + return SWITCH_STATUS_SUCCESS; } /* rotate the log file */ static switch_status_t mod_log2file_rotate(void) { - unsigned int i = 0; - unsigned char *p = NULL; - unsigned char *q = NULL; + unsigned int i = 0; + unsigned int flags = 0; + char *p = NULL; + char *q = NULL; switch_status_t stat = 0; switch_size_t nbytes = 1024; switch_file_t *l_afd = NULL; + switch_memory_pool_t *pool = NULL; globals.log_size = 0; - stat = switch_file_seek(globals.log_afd, APR_SET, 0); - + switch_core_new_memory_pool(&pool); + stat = switch_file_seek(globals.log_afd, SWITCH_FOPEN_SET, 0); if (stat != SWITCH_STATUS_SUCCESS) return SWITCH_STATUS_FALSE; - p = malloc(strlen(globals.logfile)+WARM_FUZZY_OFFSET); if (!p) { return SWITCH_STATUS_FALSE; @@ -205,22 +210,28 @@ } memset(p, '\0', strlen(globals.logfile)+WARM_FUZZY_OFFSET); for (i=1;i<MAX_ROT; i++) { - sprintf(p, "%s.%i", globals.logfile, i); - stat = switch_file_open(l_afd, p, APR_READ, NULL, NULL); + sprintf((char *)p, "%s.%i", globals.logfile, i); + + stat = switch_file_open(&l_afd, p, SWITCH_FOPEN_READ, SWITCH_FPROT_UREAD, pool); + if (stat == SWITCH_STATUS_SUCCESS) { switch_file_close(l_afd); continue; } - stat = switch_file_open(l_afd, p, APR_READ | APR_WRITE | APR_CREATE , NULL, NULL); + flags |= SWITCH_FOPEN_READ; + flags |= SWITCH_FOPEN_WRITE; + flags |= SWITCH_FOPEN_CREATE; + + stat = switch_file_open(&l_afd, p, flags , SWITCH_FPROT_UREAD | SWITCH_FPROT_UWRITE ,pool); if (stat == SWITCH_STATUS_SUCCESS) break; } - while ((stat = switch_file_read(&globals.log_afd, q, &nbytes)) == SWITCH_STATUS_SUCCESS) { + while ((stat = switch_file_read(globals.log_afd, q, &nbytes)) == SWITCH_STATUS_SUCCESS) { switch_file_write(l_afd, q, &nbytes); memset(q, '\0', 1024); nbytes = 1024; } - stat = switch_file_seek(&globals.log_afd, APR_SET, 0); + stat = switch_file_seek(globals.log_afd, SWITCH_FOPEN_SET, 0); free(p); free(q); return SWITCH_STATUS_SUCCESS; @@ -229,26 +240,23 @@ /* check the size of the file for rotation */ static switch_status_t mod_log2file_check(void) { - switch_status_t stat; switch_size_t fsize; - fsize = switch_file_get_size(&globals.log_afd); - - if (stat != SWITCH_STATUS_SUCCESS) - return SWITCH_STATUS_FALSE; + fsize = switch_file_get_size(globals.log_afd); + printf("Checking LogFile\n"); if (fsize >= globals.roll_size) { return mod_log2file_rotate(); } - + printf("File Size %i\n",fsize); return SWITCH_STATUS_SUCCESS; } /* write to the actual logfile */ static switch_status_t mod_log2file_write(char *fmt, ...) { - unsigned int len; char *log_data; switch_status_t stat; + switch_size_t len; va_list args; va_start(args, fmt); printf("Mod Log To File Write\n"); @@ -257,12 +265,14 @@ #else len = vasprintf(&log_data, fmt, args); #endif + printf("log data %s\n", log_data); if (len <= 0) return SWITCH_STATUS_FALSE; - stat = switch_file_write(&globals.log_afd, log_data, len); - if (stat != SWITCH_STATUS_SUCCESS) - return SWITCH_STATUS_FALSE; + stat = switch_file_write(globals.log_afd, log_data, &len); + //if (stat != SWITCH_STATUS_SUCCESS) + //return SWITCH_STATUS_FALSE; globals.log_size += len; + printf("Done Writing To File"); /* we may want to hold back on this for preformance reasons */ mod_log2file_check(); return SWITCH_STATUS_SUCCESS; @@ -270,8 +280,7 @@ static switch_status_t mod_log2file_logger(const switch_log_node_t *node, switch_log_level_t level) { - uint8_t *lookup = NULL; - char line_no[sizeof(int)*8+1]; + char line_no[sizeof(int)*8+1]; char date[80] = ""; switch_time_exp_t time; switch_size_t retsize; @@ -326,6 +335,8 @@ char *cf = "log2file.conf"; switch_xml_t cfg, xml, settings, param; + printf("Running load_config\n"); + if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of %s failed\n", cf); } else { @@ -366,7 +377,9 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "OH OH no pool\n"); return SWITCH_STATUS_TERM; } - + + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT,"Loading ModLog2File\n"); *interface = &log2file_module_interface; if ((status=load_config()) != SWITCH_STATUS_SUCCESS) {