cl_log(log_as, "fn(%s [%d]): %s", function, log_level, buf);
cl_log(log_as, "mask(%s%s%s [%d]): %s", file?file:"", (file !=NULL && function !=NULL)?":":"", function?function:"", log_level, buf);
do_crm_log(int log_level, const char *function,	   const char *alt_debugfile, const char *fmt, ...){	int log_as = log_level;	gboolean do_log = FALSE;	if(log_level <= (int)crm_log_level) {		do_log = TRUE;		if(log_level > LOG_INFO) {			log_as = LOG_DEBUG;		}	}	if(do_log) {		va_list ap;		char	*buf = NULL;		int	nbytes;				va_start(ap, fmt);		nbytes=vasprintf(&buf, fmt, ap);		va_end(ap);		log_level -= LOG_INFO;		if(log_level > 1) {			if(function == NULL) {				cl_log(log_as, "[%d] %s", log_level, buf);							} else {				cl_log(log_as, "fn(%s [%d]): %s",				       function, log_level, buf);			}		} else {			if(function == NULL) {				cl_log(log_as, "%s", buf);							} else {				cl_log(log_as, "fn(%s): %s", function, buf);			}		}				if(nbytes > MAXLINE) {			cl_log(LOG_WARNING, "Log from %s() was truncated",			       crm_str(function));		}		free(buf);	}}