diff --git a/conf/autoload_configs/console.conf.xml b/conf/autoload_configs/console.conf.xml
index 6076c5156e..76508cb17e 100644
--- a/conf/autoload_configs/console.conf.xml
+++ b/conf/autoload_configs/console.conf.xml
@@ -4,9 +4,9 @@
-
+
diff --git a/conf/autoload_configs/logfile.conf.xml b/conf/autoload_configs/logfile.conf.xml
index 32d59c4ee9..e666cc9469 100644
--- a/conf/autoload_configs/logfile.conf.xml
+++ b/conf/autoload_configs/logfile.conf.xml
@@ -14,9 +14,9 @@
-
+
diff --git a/conf/autoload_configs/switch.conf.xml b/conf/autoload_configs/switch.conf.xml
index f30ac7cb83..7cb3ecfa90 100644
--- a/conf/autoload_configs/switch.conf.xml
+++ b/conf/autoload_configs/switch.conf.xml
@@ -4,7 +4,7 @@
-
+
diff --git a/src/include/switch_types.h b/src/include/switch_types.h
index 47eef50425..76067565f2 100644
--- a/src/include/switch_types.h
+++ b/src/include/switch_types.h
@@ -516,7 +516,8 @@ typedef enum {
SWITCH_LOG_ERROR = 3,
SWITCH_LOG_CRIT = 2,
SWITCH_LOG_ALERT = 1,
- SWITCH_LOG_CONSOLE = 0
+ SWITCH_LOG_CONSOLE = 0,
+ SWITCH_LOG_INVALID = 64
} switch_log_level_t;
diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c
index c3d123a7db..685fc53f0e 100644
--- a/src/mod/applications/mod_commands/mod_commands.c
+++ b/src/mod/applications/mod_commands/mod_commands.c
@@ -565,8 +565,13 @@ SWITCH_STANDARD_API(ctl_function)
} else {
arg = -1;
}
- switch_core_session_ctl(SCSC_LOGLEVEL, &arg);
- stream->write_function(stream, "+OK log level: %s [%d]\n", switch_log_level2str(arg), arg);
+
+ if (arg == -1 || arg == SWITCH_LOG_INVALID) {
+ stream->write_function(stream, "-ERR syntax error, log level not set!\n");
+ } else {
+ switch_core_session_ctl(SCSC_LOGLEVEL, &arg);
+ stream->write_function(stream, "+OK log level: %s [%d]\n", switch_log_level2str(arg), arg);
+ }
} else if (!strcasecmp(argv[0], "last_sps")) {
switch_core_session_ctl(SCSC_LAST_SPS, &arg);
stream->write_function(stream, "+OK last sessions per second: %d\n", arg);
diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c
index b79218f9c5..ed14c49329 100644
--- a/src/mod/applications/mod_dptools/mod_dptools.c
+++ b/src/mod/applications/mod_dptools/mod_dptools.c
@@ -635,6 +635,9 @@ SWITCH_STANDARD_APP(log_function)
} else {
log_str = level;
}
+ if (ltype == SWITCH_LOG_INVALID) {
+ ltype = SWITCH_LOG_DEBUG;
+ }
switch_log_printf(SWITCH_CHANNEL_LOG, ltype, "%s\n", log_str);
switch_safe_free(level);
diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
index 77743badc2..98ecbb8377 100644
--- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
+++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
@@ -811,6 +811,7 @@ static switch_status_t parse_command(listener_t * listener, switch_event_t *even
} else if (!strncasecmp(cmd, "log", 3)) {
char *level_s;
+ switch_log_level_t ltype = SWITCH_LOG_DEBUG;
//pull off the first newline/carriage return
strip_cr(cmd);
@@ -824,11 +825,12 @@ static switch_status_t parse_command(listener_t * listener, switch_event_t *even
level_s++;
}
//see if we lined up on an argument or not
- if (switch_strlen_zero(level_s)) {
- level_s = "debug";
+ if (!switch_strlen_zero(level_s)) {
+ ltype = switch_log_str2level(level_s);
}
- if ((listener->level = switch_log_str2level(level_s))) {
+ if (ltype && ltype != SWITCH_LOG_INVALID) {
+ listener->level = ltype;
switch_set_flag(listener, LFLAG_LOG);
snprintf(reply, reply_len, "+OK log level %s [%d]", level_s, listener->level);
} else {
diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
index 00ca044f07..f6dd34c891 100644
--- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
+++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
@@ -3002,6 +3002,9 @@ static JSBool js_log(JSContext * cx, JSObject * obj, uintN argc, jsval * argv, j
if (argc > 1) {
if ((level_str = JS_GetStringBytes(JS_ValueToString(cx, argv[0])))) {
level = switch_log_str2level(level_str);
+ if (level == SWITCH_LOG_INVALID) {
+ level = SWITCH_LOG_DEBUG;
+ }
}
if ((msg = JS_GetStringBytes(JS_ValueToString(cx, argv[1])))) {
diff --git a/src/mod/loggers/mod_console/mod_console.c b/src/mod/loggers/mod_console/mod_console.c
index d0a35fbeb4..c3c59464af 100644
--- a/src/mod/loggers/mod_console/mod_console.c
+++ b/src/mod/loggers/mod_console/mod_console.c
@@ -76,10 +76,10 @@ static void add_mapping(char *var, char *val, int cumlative)
uint32_t l = switch_log_str2level(val);
uint32_t i;
- assert(l < 10);
-
- for (i = 0; i <= l; i++) {
- m |= (1 << i);
+ if (l < 10) {
+ for (i = 0; i <= l; i++) {
+ m |= (1 << i);
+ }
}
} else {
m = switch_log_str2mask(val);
@@ -227,8 +227,12 @@ SWITCH_STANDARD_API(console_api_function)
level = switch_log_str2level(argv[1]);
}
- hard_log_level = level;
- stream->write_function(stream, "+OK console log level set to %s\n", switch_log_level2str(hard_log_level));
+ if (level == SWITCH_LOG_INVALID) {
+ stream->write_function(stream, "-ERR syntax error, console log level not set!\n");
+ } else {
+ hard_log_level = level;
+ stream->write_function(stream, "+OK console log level set to %s\n", switch_log_level2str(hard_log_level));
+ }
goto end;
} else if (!strcasecmp(argv[0], "colorize")) {
COLORIZE = switch_true(argv[1]);
diff --git a/src/switch_core.c b/src/switch_core.c
index 60535817aa..b31740261d 100644
--- a/src/switch_core.c
+++ b/src/switch_core.c
@@ -706,7 +706,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_init(switch_core_flag_t flags, switc
level = switch_log_str2level(val);
}
- switch_core_session_ctl(SCSC_LOGLEVEL, &level);
+ if (level != SWITCH_LOG_INVALID) {
+ switch_core_session_ctl(SCSC_LOGLEVEL, &level);
+ }
} else if (!strcasecmp(var, "mailer-app")) {
runtime.mailer_app = switch_core_strdup(runtime.memory_pool, val);
diff --git a/src/switch_cpp.cpp b/src/switch_cpp.cpp
index 6bc8335a69..110518fcc9 100644
--- a/src/switch_cpp.cpp
+++ b/src/switch_cpp.cpp
@@ -485,6 +485,9 @@ void console_log(char *level_str, char *msg)
switch_log_level_t level = SWITCH_LOG_DEBUG;
if (level_str) {
level = switch_log_str2level(level_str);
+ if (level == SWITCH_LOG_INVALID) {
+ level = SWITCH_LOG_DEBUG;
+ }
}
switch_log_printf(SWITCH_CHANNEL_LOG, level, msg);
fflush(stdout); // TEMP ONLY!! SHOULD NOT BE CHECKED IN!!
diff --git a/src/switch_log.c b/src/switch_log.c
index 55c6ca074e..2ac0a70d26 100644
--- a/src/switch_log.c
+++ b/src/switch_log.c
@@ -75,6 +75,7 @@ SWITCH_DECLARE(uint32_t) switch_log_str2mask(const char *str)
char *argv[10] = { 0 };
uint32_t mask = 0;
char *p = strdup(str);
+ switch_log_level_t level;
assert(p);
@@ -84,7 +85,10 @@ SWITCH_DECLARE(uint32_t) switch_log_str2mask(const char *str)
mask = 0xFF;
break;
} else {
- mask |= (1 << switch_log_str2level(argv[x]));
+ level = switch_log_str2level(argv[x]);
+ if (level != SWITCH_LOG_INVALID) {
+ mask |= (1 << level);
+ }
}
}
}
@@ -99,7 +103,7 @@ SWITCH_DECLARE(uint32_t) switch_log_str2mask(const char *str)
SWITCH_DECLARE(switch_log_level_t) switch_log_str2level(const char *str)
{
int x = 0;
- switch_log_level_t level = SWITCH_LOG_DEBUG;
+ switch_log_level_t level = SWITCH_LOG_INVALID;
for (x = 0;; x++) {
if (!LEVELS[x]) {