mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-29 23:39:35 +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
						George Joseph
					
				
			
			
				
	
			
			
			
						parent
						
							8d3d7bdb82
						
					
				
				
					commit
					b4347c4861
				
			
							
								
								
									
										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