From: | Andres Freund <andres(at)2ndquadrant(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | velog + vereport? |
Date: | 2012-10-12 11:00:17 |
Message-ID: | 201210121300.18134.andres@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
When writing code which should be able to run inside and outside a normal
backend environment its sometimes useful to be able add a wrapper arround
elog/ereport for when executing inside the backend.
Currently that requires relatively ugly macro surgery and/or recompiling the
file. I suggest adding velog/vereport or elog_va/vereport_va to make such
wrappers easier (still not easy though).
The aim would be able to do something like:
#define my_elog \
elog_wrapper_start(__FILE__, __LINE__, PG_FUNCNAME_MACRO), \
elog_wrapper_finish
And then
void
elog_wrapper_finish(int elevel, const char *fmt, ..)
{
va_list args;
va_start(args);
velog(elevel, fmt, args);
va_end(args);
}
when inside the backend
And something like:
void elog_wrapper_finish(int elevel, const char *fmt, ..)
{
va_list args;
fprintf(stderr, "...", my_elog_file, my_elog_line, my_elog_func);
va_start(args);
vfprintf(stderr, fprintf, args);
va_end(args);
}
Comments? Better idea (please!)?
This would be easier if we had vararg macros, but I don't see me winning that
argument :P
Greetings,
Andres
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2012-10-12 11:57:39 | Re: Deprecating RULES |
Previous Message | Daniel Farina | 2012-10-12 09:08:13 | Re: Deprecating RULES |