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


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to