<p>George Joseph <strong>submitted</strong> this change.</p><p><a href="https://gerrit.asterisk.org/c/asterisk/+/15683">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  George Joseph: Looks good to me, approved; Approved for Submit

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">logger: Console sessions will now respect logger.conf dateformat= option<br><br>The 'core' console (ie: asterisk -c) does read logger.conf and does<br>use the dateformat= option.<br><br>Whereas 'remote' consoles (ie: asterisk -r -T) does not read logger.conf<br>and uses a hard coded dateformat option for printing received verbose messages:<br>  main/logger.c: static char dateformat[256] = "%b %e %T"<br><br>This change will load logger.conf for each remote console session and<br>use the dateformat= option to set the per-line timestamp for verbose messages<br><br>Change-Id: I3ea10990dbd920e9f7ce8ff771bc65aa7f4ea8c1<br>ASTERISK-25358: #close<br>Reported-by: Igor Liferenko<br>---<br>A doc/CHANGES-staging/logger_dateformat.txt<br>M include/asterisk/logger.h<br>M main/asterisk.c<br>M main/logger.c<br>4 files changed, 71 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/doc/CHANGES-staging/logger_dateformat.txt b/doc/CHANGES-staging/logger_dateformat.txt</span><br><span>new file mode 100644</span><br><span>index 0000000..efeb118</span><br><span>--- /dev/null</span><br><span>+++ b/doc/CHANGES-staging/logger_dateformat.txt</span><br><span>@@ -0,0 +1,47 @@</span><br><span style="color: hsl(120, 100%, 40%);">+Subject: logger</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The dateformat option in logger.conf will now control the remote</span><br><span style="color: hsl(120, 100%, 40%);">+console (asterisk -r -T) timestamp format.  Previously, dateformat only</span><br><span style="color: hsl(120, 100%, 40%);">+controlled the formatting of the timestamp going to log files and the</span><br><span style="color: hsl(120, 100%, 40%);">+main console (asterisk -c) but only for non-verbose messages.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Internally, Asterisk does not send the logging timestamp with verbose</span><br><span style="color: hsl(120, 100%, 40%);">+messages to console clients. It's up to the Asterisk remote consoles</span><br><span style="color: hsl(120, 100%, 40%);">+to format verbose messages.  Asterisk remote consoles previously did</span><br><span style="color: hsl(120, 100%, 40%);">+not load dateformat from logger.conf.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Previously there was a non-configurable and hard-coded "%b %e %T"</span><br><span style="color: hsl(120, 100%, 40%);">+dateformat that would be used no matter what on all verbose console</span><br><span style="color: hsl(120, 100%, 40%);">+messages printed on remote consoles.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Example:</span><br><span style="color: hsl(120, 100%, 40%);">+logger.conf</span><br><span style="color: hsl(120, 100%, 40%);">+ dateformat=%F %T.%3q</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# asterisk -rvvv -T</span><br><span style="color: hsl(120, 100%, 40%);">+[2021-03-19 09:54:19.760-0400]  Loading res_stasis_answer.so.</span><br><span style="color: hsl(120, 100%, 40%);">+[Mar 19 09:55:43]     -- Goto (dialExten,s,1)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Given the following example configuration in logger.conf, Asterisk log</span><br><span style="color: hsl(120, 100%, 40%);">+files and the console, will log verbose messages using the given</span><br><span style="color: hsl(120, 100%, 40%);">+timestamp.  Now ensuring that all remote console messages are logged</span><br><span style="color: hsl(120, 100%, 40%);">+with the same dateformat as other log streams.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+---</span><br><span style="color: hsl(120, 100%, 40%);">+[general]</span><br><span style="color: hsl(120, 100%, 40%);">+dateformat=%F %T.%3q</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[logfiles]</span><br><span style="color: hsl(120, 100%, 40%);">+console  => notice,warning,error,verbose</span><br><span style="color: hsl(120, 100%, 40%);">+full     => notice,warning,error,debug,verbose</span><br><span style="color: hsl(120, 100%, 40%);">+---</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Now we have a globally-defined dateformat that will be used</span><br><span style="color: hsl(120, 100%, 40%);">+consistently across the Asterisk main console, remote consoles, and</span><br><span style="color: hsl(120, 100%, 40%);">+log files.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Now we have consistent logging:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# asterisk -rvvv -T</span><br><span style="color: hsl(120, 100%, 40%);">+[2021-03-19 09:54:19.760-0400]  Loading res_stasis_answer.so.</span><br><span style="color: hsl(120, 100%, 40%);">+[2021-03-19 09:55:43.920-0400]     -- Goto (dialExten,s,1)</span><br><span>diff --git a/include/asterisk/logger.h b/include/asterisk/logger.h</span><br><span>index 6ab55f7..d823ed4 100644</span><br><span>--- a/include/asterisk/logger.h</span><br><span>+++ b/include/asterisk/logger.h</span><br><span>@@ -621,6 +621,11 @@</span><br><span>  */</span><br><span> unsigned int ast_trace_get_by_module(const char *module);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*!</span><br><span style="color: hsl(120, 100%, 40%);">+ * \brief load logger.conf configuration for console socket connections</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+void ast_init_logger_for_socket_console(void);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #define TRACE_ATLEAST(level) \</span><br><span>     (option_trace >= (level) \</span><br><span>                || (ast_opt_trace_module \</span><br><span>diff --git a/main/asterisk.c b/main/asterisk.c</span><br><span>index b42e596..f53c781 100644</span><br><span>--- a/main/asterisk.c</span><br><span>+++ b/main/asterisk.c</span><br><span>@@ -3254,6 +3254,8 @@</span><br><span>  }</span><br><span> </span><br><span>        ast_verbose("Connected to Asterisk %s currently running on %s (pid = %d)\n", version, hostname, pid);</span><br><span style="color: hsl(120, 100%, 40%);">+       ast_init_logger_for_socket_console();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>      remotehostname = hostname;</span><br><span>   if (el_hist == NULL || el == NULL)</span><br><span>           ast_el_initialize();</span><br><span>diff --git a/main/logger.c b/main/logger.c</span><br><span>index 5562bf3..457a6fb 100644</span><br><span>--- a/main/logger.c</span><br><span>+++ b/main/logger.c</span><br><span>@@ -679,6 +679,23 @@</span><br><span>         return chan;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+void ast_init_logger_for_socket_console(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       struct ast_config *cfg;</span><br><span style="color: hsl(120, 100%, 40%);">+       const char *s;</span><br><span style="color: hsl(120, 100%, 40%);">+        struct ast_flags config_flags = { 0 };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      if (!(cfg = ast_config_load2("logger.conf", "logger", config_flags)) || cfg == CONFIG_STATUS_FILEINVALID) {</span><br><span style="color: hsl(120, 100%, 40%);">+               return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   if ((s = ast_variable_retrieve(cfg, "general", "dateformat"))) {</span><br><span style="color: hsl(120, 100%, 40%);">+          ast_copy_string(dateformat, s, sizeof(dateformat));</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   ast_config_destroy(cfg);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*!</span><br><span>  * \brief Read config, setup channels.</span><br><span>  * \param altconf Alternate configuration file to read.</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/15683">change 15683</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/asterisk/+/15683"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: 18 </div>
<div style="display:none"> Gerrit-Change-Id: I3ea10990dbd920e9f7ce8ff771bc65aa7f4ea8c1 </div>
<div style="display:none"> Gerrit-Change-Number: 15683 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: Mark Murawski <markm@intellasoft.net> </div>
<div style="display:none"> Gerrit-Reviewer: Friendly Automation </div>
<div style="display:none"> Gerrit-Reviewer: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>