Re: [PATCH 1/2] Add support for debug level trace in config file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Looks sane to me. ACK

On 9/20/2012 4:55 PM, Jan Friesse wrote:
> Because logsys uses 3-bits for log level encoded in rec, it's impossible
> to add trace log level in clean way. Instead of that, we are using
> recid of TRACE1 for trace messages. So if trace is allowed in
> configuration file, we change old condition to log only LOGSYS_RECID_LOG
> to log also LOGSYS_RECID_TRACE1.
> 
> Signed-off-by: Jan Friesse <jfriesse@xxxxxxxxxx>
> ---
>  exec/logsys.c                    |   35 +++++++++++++++++++++++++++++------
>  exec/mainconfig.c                |   10 ++++++++--
>  include/corosync/engine/logsys.h |    7 +++++++
>  man/corosync.conf.5              |    3 ++-
>  4 files changed, 46 insertions(+), 9 deletions(-)
> 
> diff --git a/exec/logsys.c b/exec/logsys.c
> index 4c3e11a..34de644 100644
> --- a/exec/logsys.c
> +++ b/exec/logsys.c
> @@ -144,6 +144,7 @@ struct logsys_logger {
>  	int logfile_priority;			/* priority to file */
>  	int init_status;			/* internal field to handle init queues
>  						   for subsystems */
> +	unsigned int trace1_allowed;
>  };
>  
>  
> @@ -439,13 +440,14 @@ static void log_printf_to_logs (
>  	int c;
>  	struct tm tm_res;
>  
> -	if (LOGSYS_DECODE_RECID(rec_ident) != LOGSYS_RECID_LOG) {
> -		return;
> -	}
> -
>  	subsysid = LOGSYS_DECODE_SUBSYSID(rec_ident);
>  	level = LOGSYS_DECODE_LEVEL(rec_ident);
>  
> +	if (!((LOGSYS_DECODE_RECID(rec_ident) == LOGSYS_RECID_LOG) ||
> +	      (logsys_loggers[subsysid].trace1_allowed && LOGSYS_DECODE_RECID(rec_ident) == LOGSYS_RECID_TRACE1))) {
> +		return;
> +	}
> +
>  	while ((c = format_buffer[format_buffer_idx])) {
>  		cutoff = 0;
>  		if (c != '%') {
> @@ -960,6 +962,7 @@ int _logsys_system_setup(
>  	logsys_loggers[i].mode = mode;
>  
>  	logsys_loggers[i].debug = debug;
> +	logsys_loggers[i].trace1_allowed = 0;
>  
>  	if (logsys_config_file_set_unlocked (i, &errstr, logfile) < 0) {
>  		pthread_mutex_unlock (&logsys_config_mutex);
> @@ -1495,12 +1498,32 @@ int logsys_config_debug_set (
>  	if (subsys != NULL) {
>  		i = _logsys_config_subsys_get_unlocked (subsys);
>  		if (i >= 0) {
> -			logsys_loggers[i].debug = debug;
> +			switch (debug) {
> +			case LOGSYS_DEBUG_OFF:
> +			case LOGSYS_DEBUG_ON:
> +				logsys_loggers[i].debug = debug;
> +				logsys_loggers[i].trace1_allowed = 0;
> +				break;
> +			case LOGSYS_DEBUG_TRACE:
> +				logsys_loggers[i].debug = LOGSYS_DEBUG_ON;
> +				logsys_loggers[i].trace1_allowed = 1;
> +				break;
> +			}
>  			i = 0;
>  		}
>  	} else {
>  		for (i = 0; i <= LOGSYS_MAX_SUBSYS_COUNT; i++) {
> -			logsys_loggers[i].debug = debug;
> +			switch (debug) {
> +			case LOGSYS_DEBUG_OFF:
> +			case LOGSYS_DEBUG_ON:
> +				logsys_loggers[i].debug = debug;
> +				logsys_loggers[i].trace1_allowed = 0;
> +				break;
> +			case LOGSYS_DEBUG_TRACE:
> +				logsys_loggers[i].debug = LOGSYS_DEBUG_ON;
> +				logsys_loggers[i].trace1_allowed = 1;
> +				break;
> +			}
>  		}
>  		i = 0;
>  	}
> diff --git a/exec/mainconfig.c b/exec/mainconfig.c
> index cbc41f5..d15dd49 100644
> --- a/exec/mainconfig.c
> +++ b/exec/mainconfig.c
> @@ -424,14 +424,20 @@ static int corosync_main_config_set (
>  	}
>  
>  	if (!objdb_get_string (objdb, object_handle, "debug", &value)) {
> +		if (strcmp (value, "trace") == 0) {
> +			if (logsys_config_debug_set (subsys, LOGSYS_DEBUG_TRACE) < 0) {
> +				error_reason = "unable to set debug on";
> +				goto parse_error;
> +			}
> +		} else
>  		if (strcmp (value, "on") == 0) {
> -			if (logsys_config_debug_set (subsys, 1) < 0) {
> +			if (logsys_config_debug_set (subsys, LOGSYS_DEBUG_ON) < 0) {
>  				error_reason = "unable to set debug on";
>  				goto parse_error;
>  			}
>  		} else
>  		if (strcmp (value, "off") == 0) {
> -			if (logsys_config_debug_set (subsys, 0) < 0) {
> +			if (logsys_config_debug_set (subsys, LOGSYS_DEBUG_OFF) < 0) {
>  				error_reason = "unable to set debug off";
>  				goto parse_error;
>  			}
> diff --git a/include/corosync/engine/logsys.h b/include/corosync/engine/logsys.h
> index df1db1d..6b26a9f 100644
> --- a/include/corosync/engine/logsys.h
> +++ b/include/corosync/engine/logsys.h
> @@ -58,6 +58,7 @@ extern "C" {
>  #define LOGSYS_MODE_FORK		(1<<3)
>  #define LOGSYS_MODE_THREADED		(1<<4)
>  
> +
>  /*
>   * Log priorities, compliant with syslog and SA Forum Log spec.
>   */
> @@ -92,6 +93,12 @@ extern "C" {
>  #define LOGSYS_RECID_TRACE7		(LOGSYS_RECID_MAX - 10)
>  #define LOGSYS_RECID_TRACE8		(LOGSYS_RECID_MAX - 11)
>  
> +/*
> + * Debug levels
> + */
> +#define LOGSYS_DEBUG_OFF		0
> +#define LOGSYS_DEBUG_ON			1
> +#define LOGSYS_DEBUG_TRACE		2
>  
>  /*
>   * Internal APIs that must be globally exported
> diff --git a/man/corosync.conf.5 b/man/corosync.conf.5
> index 82ec80e..bad9700 100644
> --- a/man/corosync.conf.5
> +++ b/man/corosync.conf.5
> @@ -601,7 +601,8 @@ The default is: info.
>  
>  .TP
>  debug
> -This specifies whether debug output is logged for this particular logger.
> +This specifies whether debug output is logged for this particular logger. Also can contain
> +value trace, what is highest level of debug informations.
>  
>  The default is off.
>  
> 

_______________________________________________
discuss mailing list
discuss@xxxxxxxxxxxx
http://lists.corosync.org/mailman/listinfo/discuss


[Index of Archives]     [Linux Clusters]     [Corosync Project]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]    [Yosemite Photos]    [Linux Kernel]     [Linux SCSI]     [X.Org]

  Powered by Linux