velog + vereport?

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

Responses

Browse pgsql-hackers by date

  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