[Openais] [PATCH corosync/trunk] add a log_printf function to coroipcs so we can pass log level

Fabio M. Di Nitto fdinitto at redhat.com
Wed Oct 14 20:39:41 PDT 2009


On Thu, 2009-10-15 at 11:22 +1300, angus salkeld wrote:
> Hi
> 
> Add apiv2->log_printf(<log level>, ...);
> 
> Else you can't add anything but error logs int coroipcs.c.
> 
> (Attached & inline)
> 
> Note: I am not nuts about the #include <syslog.h>
> but if I include <logsys.h> the #define for log_printf() in
> that header messes with the log_printf in coroipcs.c

try this:

#define LOGSYS_UTILS_ONLY 1
#include <corosync/engine/logsys.h>


> -struct coroipcs_init_stats_state {
> +struct coroipcs_init_state_v2 {
>  	hdb_handle_t (*stats_create_connection) (const char* name,
>  		pid_t pid, int fd);
>  	void (*stats_destroy_connection) (hdb_handle_t handle);
>  	void (*stats_update_value) (hdb_handle_t handle,
>  		const char *name, const void *value, size_t value_len);
>  	void (*stats_increment_value) (hdb_handle_t handle, const char* name);
> +	void (*log_printf) (unsigned int level, const char *format, ...)
> +		__attribute__((format(printf, 2, 3)));
>  };
>  

Instead of making this generic log_printf available only for stats,
would be an idea to look into cleaning it up all over the place in a
similar way as totem, where there is only one log_printf that behaves as
the one coming from logsys?

#define log_printf(level, format, args...)
\
do {
\
        instance->totemudp_log_printf (
\
                LOGSYS_ENCODE_RECID(level,
\
                                    instance->totemudp_subsys_id,
\
                                    LOGSYS_RECID_LOG),
\
                __FUNCTION__, __FILE__, __LINE__,
\
                (const char *)format, ##args);
\
} while (0);

or something along those lines......

AFAICT ipc has 2/3 different ipc_log_foo, one for each level..

Fabio



More information about the Openais mailing list