From 74262ee9649fd3e8f20b5e35412e1c245db8c8b2 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 16 Jul 2014 02:28:30 +0000 Subject: [PATCH] Add `session::consoleLog2()` This allows emitting log messages that include the file name and line number of the call. Because we have the session object here, the log messages can be correctly associated with the session from which they were emitted. As when the kernel developers need to 'fix' a system call, we'll just add a number to the name of the existing function. --- src/include/switch_cpp.h | 1 + src/switch_cpp.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/include/switch_cpp.h b/src/include/switch_cpp.h index 9ccb04d39e..382c4b4fa1 100644 --- a/src/include/switch_cpp.h +++ b/src/include/switch_cpp.h @@ -392,6 +392,7 @@ SWITCH_DECLARE(bool) email(char *to, char *from, char *headers = NULL, char *bod virtual switch_status_t run_dtmf_callback(void *input, switch_input_type_t itype) = 0; SWITCH_DECLARE(void) consoleLog(char *level_str, char *msg); + SWITCH_DECLARE(void) consoleLog2(char *level_str, char *file, char *func, int line, char *msg); }; diff --git a/src/switch_cpp.cpp b/src/switch_cpp.cpp index 38481fd635..e00f4d6280 100644 --- a/src/switch_cpp.cpp +++ b/src/switch_cpp.cpp @@ -1237,6 +1237,19 @@ SWITCH_DECLARE(void) CoreSession::consoleLog(char *level_str, char *msg) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), level, "%s", switch_str_nil(msg)); } +SWITCH_DECLARE(void) CoreSession::consoleLog2(char *level_str, char *file, char *func, int line, 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_ID_SESSION, file, func, line, (const char*)session, + level, "%s", switch_str_nil(msg)); +} + /* ---- methods not bound to CoreSession instance ---- */