static switch_status_t process_node(const switch_log_node_t *node, switch_log_level_t level) { switch_hash_index_t *hi; void *val; const void *var; logfile_profile_t *profile; for (hi = switch_core_hash_first(profile_hash); hi; hi = switch_core_hash_next(&hi)) { size_t mask = 0; size_t ok = 0; switch_core_hash_this(hi, &var, NULL, &val); profile = val; ok = switch_log_check_mask(profile->all_level, level); if (!ok) { mask = (size_t) switch_core_hash_find(profile->log_hash, node->file); ok = switch_log_check_mask(mask, level); } if (!ok) { mask = (size_t) switch_core_hash_find(profile->log_hash, node->func); ok = switch_log_check_mask(mask, level); } if (!ok) { char tmp[256] = ""; switch_snprintf(tmp, sizeof(tmp), "%s:%s", node->file, node->func); mask = (size_t) switch_core_hash_find(profile->log_hash, tmp); ok = switch_log_check_mask(mask, level); } if (ok) { if (profile->log_uuid && !zstr(node->userdata)) { char buf[2048]; char *dup = strdup(node->data); char *lines[100]; int argc, i; argc = switch_split(dup, '\n', lines); for (i = 0; i < argc; i++) { switch_snprintf(buf, sizeof(buf), "%s %s\n", node->userdata, lines[i]); mod_logfile_raw_write(profile, buf); } free(dup); } else { mod_logfile_raw_write(profile, node->data); } } } return SWITCH_STATUS_SUCCESS; }
static switch_status_t process_node(const switch_log_node_t *node, switch_log_level_t level) { switch_hash_index_t *hi; void *val; const void *var; logfile_profile_t *profile; for (hi = switch_hash_first(NULL, profile_hash); hi; hi = switch_hash_next(hi)) { size_t mask = 0; size_t ok = 0; switch_hash_this(hi, &var, NULL, &val); profile = val; ok = switch_log_check_mask(profile->all_level, level); if (!ok) { mask = (size_t) switch_core_hash_find(profile->log_hash, node->file); ok = switch_log_check_mask(mask, level); } if (!ok) { mask = (size_t) switch_core_hash_find(profile->log_hash, node->func); ok = switch_log_check_mask(mask, level); } if (ok) { if (profile->log_uuid && !zstr(node->userdata)) { char buf[2048]; switch_snprintf(buf, sizeof(buf), "%s %s", node->userdata, node->data); mod_logfile_raw_write(profile, buf); } else { mod_logfile_raw_write(profile, node->data); } } } return SWITCH_STATUS_SUCCESS; }