mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 11:58:52 +00:00
logger: Console sessions will now respect logger.conf dateformat= option
The 'core' console (ie: asterisk -c) does read logger.conf and does use the dateformat= option. Whereas 'remote' consoles (ie: asterisk -r -T) does not read logger.conf and uses a hard coded dateformat option for printing received verbose messages: main/logger.c: static char dateformat[256] = "%b %e %T" This change will load logger.conf for each remote console session and use the dateformat= option to set the per-line timestamp for verbose messages Change-Id: I3ea10990dbd920e9f7ce8ff771bc65aa7f4ea8c1 ASTERISK-25358: #close Reported-by: Igor Liferenko
This commit is contained in:
committed by
George Joseph
parent
4393207751
commit
a0009c807e
47
doc/CHANGES-staging/logger_dateformat.txt
Normal file
47
doc/CHANGES-staging/logger_dateformat.txt
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
Subject: logger
|
||||||
|
|
||||||
|
The dateformat option in logger.conf will now control the remote
|
||||||
|
console (asterisk -r -T) timestamp format. Previously, dateformat only
|
||||||
|
controlled the formatting of the timestamp going to log files and the
|
||||||
|
main console (asterisk -c) but only for non-verbose messages.
|
||||||
|
|
||||||
|
Internally, Asterisk does not send the logging timestamp with verbose
|
||||||
|
messages to console clients. It's up to the Asterisk remote consoles
|
||||||
|
to format verbose messages. Asterisk remote consoles previously did
|
||||||
|
not load dateformat from logger.conf.
|
||||||
|
|
||||||
|
Previously there was a non-configurable and hard-coded "%b %e %T"
|
||||||
|
dateformat that would be used no matter what on all verbose console
|
||||||
|
messages printed on remote consoles.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
logger.conf
|
||||||
|
dateformat=%F %T.%3q
|
||||||
|
|
||||||
|
# asterisk -rvvv -T
|
||||||
|
[2021-03-19 09:54:19.760-0400] Loading res_stasis_answer.so.
|
||||||
|
[Mar 19 09:55:43] -- Goto (dialExten,s,1)
|
||||||
|
|
||||||
|
Given the following example configuration in logger.conf, Asterisk log
|
||||||
|
files and the console, will log verbose messages using the given
|
||||||
|
timestamp. Now ensuring that all remote console messages are logged
|
||||||
|
with the same dateformat as other log streams.
|
||||||
|
|
||||||
|
---
|
||||||
|
[general]
|
||||||
|
dateformat=%F %T.%3q
|
||||||
|
|
||||||
|
[logfiles]
|
||||||
|
console => notice,warning,error,verbose
|
||||||
|
full => notice,warning,error,debug,verbose
|
||||||
|
---
|
||||||
|
|
||||||
|
Now we have a globally-defined dateformat that will be used
|
||||||
|
consistently across the Asterisk main console, remote consoles, and
|
||||||
|
log files.
|
||||||
|
|
||||||
|
Now we have consistent logging:
|
||||||
|
|
||||||
|
# asterisk -rvvv -T
|
||||||
|
[2021-03-19 09:54:19.760-0400] Loading res_stasis_answer.so.
|
||||||
|
[2021-03-19 09:55:43.920-0400] -- Goto (dialExten,s,1)
|
@@ -621,6 +621,11 @@ an entry/exit message. To do so, you can use the ast_trace macros...
|
|||||||
*/
|
*/
|
||||||
unsigned int ast_trace_get_by_module(const char *module);
|
unsigned int ast_trace_get_by_module(const char *module);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief load logger.conf configuration for console socket connections
|
||||||
|
*/
|
||||||
|
void ast_init_logger_for_socket_console(void);
|
||||||
|
|
||||||
#define TRACE_ATLEAST(level) \
|
#define TRACE_ATLEAST(level) \
|
||||||
(option_trace >= (level) \
|
(option_trace >= (level) \
|
||||||
|| (ast_opt_trace_module \
|
|| (ast_opt_trace_module \
|
||||||
|
@@ -3254,6 +3254,8 @@ static void ast_remotecontrol(char *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ast_verbose("Connected to Asterisk %s currently running on %s (pid = %d)\n", version, hostname, pid);
|
ast_verbose("Connected to Asterisk %s currently running on %s (pid = %d)\n", version, hostname, pid);
|
||||||
|
ast_init_logger_for_socket_console();
|
||||||
|
|
||||||
remotehostname = hostname;
|
remotehostname = hostname;
|
||||||
if (el_hist == NULL || el == NULL)
|
if (el_hist == NULL || el == NULL)
|
||||||
ast_el_initialize();
|
ast_el_initialize();
|
||||||
|
@@ -679,6 +679,23 @@ static struct logchannel *make_logchannel(const char *channel, const char *compo
|
|||||||
return chan;
|
return chan;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ast_init_logger_for_socket_console(void)
|
||||||
|
{
|
||||||
|
struct ast_config *cfg;
|
||||||
|
const char *s;
|
||||||
|
struct ast_flags config_flags = { 0 };
|
||||||
|
|
||||||
|
if (!(cfg = ast_config_load2("logger.conf", "logger", config_flags)) || cfg == CONFIG_STATUS_FILEINVALID) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((s = ast_variable_retrieve(cfg, "general", "dateformat"))) {
|
||||||
|
ast_copy_string(dateformat, s, sizeof(dateformat));
|
||||||
|
}
|
||||||
|
|
||||||
|
ast_config_destroy(cfg);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Read config, setup channels.
|
* \brief Read config, setup channels.
|
||||||
* \param altconf Alternate configuration file to read.
|
* \param altconf Alternate configuration file to read.
|
||||||
|
Reference in New Issue
Block a user