Обсуждение: using __func__ to locate and distinguish some error messages

Поиск
Список
Период
Сортировка

using __func__ to locate and distinguish some error messages

От
jian he
Дата:
hi.

we have 450 appearance of
`cache lookup failed .*`

we have 141 appearance of
`could not open file .*`

so when it actually happens, it cannot quickly locate which function
where the error has happened.
maybe under certain conditions (e.g. certain build type or certain
log_min_messages),
we can also print out the function name by using gcc __func__.

or we can just do like:
if (!HeapTupleIsValid(tuple))
elog(ERROR, "cache lookup failed for relation %u %s",
RelationGetRelid(rel), __func__);

given that these errors are very unlikely to happen, if it happens,
printing out the function name seems not that inversive?



Re: using __func__ to locate and distinguish some error messages

От
Alvaro Herrera
Дата:
On 2024-Jun-07, jian he wrote:

> so when it actually happens, it cannot quickly locate which function
> where the error has happened.
> maybe under certain conditions (e.g. certain build type or certain
> log_min_messages),
> we can also print out the function name by using gcc __func__.

That information is already in the error data, so you don't need it in
the message text.  You can change your log_error_verbosity if you want
it to show up in the log; in psql you can use \errverbose to have it
shown to you after the error is thrown, or you can use
  \pset VERBOSITY verbose
to have it printed for every error message.  Tools other than psql would
need their own specific ways to display those.

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/
"Hay que recordar que la existencia en el cosmos, y particularmente la
elaboración de civilizaciones dentro de él no son, por desgracia,
nada idílicas" (Ijon Tichy)



Re: using __func__ to locate and distinguish some error messages

От
jian he
Дата:
On Fri, Jun 7, 2024 at 4:28 PM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:
>
> On 2024-Jun-07, jian he wrote:
>
> > so when it actually happens, it cannot quickly locate which function
> > where the error has happened.
> > maybe under certain conditions (e.g. certain build type or certain
> > log_min_messages),
> > we can also print out the function name by using gcc __func__.
>
> That information is already in the error data, so you don't need it in
> the message text.  You can change your log_error_verbosity if you want
> it to show up in the log; in psql you can use \errverbose to have it
> shown to you after the error is thrown, or you can use
>   \pset VERBOSITY verbose
> to have it printed for every error message.  Tools other than psql would
> need their own specific ways to display those.
>

Thanks for pointing this out.