Обсуждение: BUG #16049: log_line_prefix=%a and log_connections - application_name missing

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

BUG #16049: log_line_prefix=%a and log_connections - application_name missing

От
PG Bug reporting form
Дата:
The following bug has been logged on the website:

Bug reference:      16049
Logged by:          death lock
Email address:      deathlock13@gmail.com
PostgreSQL version: 9.5.19
Operating system:   Debian 11
Description:

[unknown] LOCATION:  BackendRun, postmaster.c:4300
[unknown] DEBUG:  00000: InitPostgres
[unknown] LOCATION:  InitPostgres, postinit.c:555
[unknown] DEBUG:  00000: my backend ID is 4
[unknown] LOCATION:  SharedInvalBackendInit, sinvaladt.c:324
[unknown] DEBUG:  00000: StartTransaction
[unknown] LOCATION:  ShowTransactionState, xact.c:4975
[unknown] DEBUG:  00000: name: unnamed; blockState:       DEFAULT; state:
INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
[unknown] LOCATION:  ShowTransactionStateRec, xact.c:5004

# log_connections - application_name MIA
[unknown] LOG:  00000: connection authorized: user=postgres
database=postgres

[unknown] LOCATION:  PerformAuthentication, postinit.c:257
psql DEBUG:  00000: CommitTransaction
psql LOCATION:  ShowTransactionState, xact.c:4975
psql DEBUG:  00000: name: unnamed; blockState:       STARTED; state:
INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
...
psql DEBUG:  00000: proc_exit(0): 4 callbacks to make
psql LOCATION:  proc_exit_prepare, ipc.c:187

# log_disconnections=on
psql LOG:  00000: disconnection: session time: 0:00:10.280 user=postgres
database=postgres host=[local]


Re: BUG #16049: log_line_prefix=%a and log_connections - application_name missing

От
Tom Lane
Дата:
PG Bug reporting form <noreply@postgresql.org> writes:
> # log_connections - application_name MIA
> [unknown] LOG:  00000: connection authorized: user=postgres
> database=postgres

This was changed about a year ago, see

https://www.postgresql.org/message-id/flat/CAHJZqBB_Pxv8HRfoh%2BAB4KxSQQuPVvtYCzMg7woNR3r7dfmopw%40mail.gmail.com

so v12 will do what you want.

            regards, tom lane



Re: BUG #16049: log_line_prefix=%a and log_connections -application_name missing

От
death lock
Дата:
"will do what you want." Not exactly - I want it to appear according
to my log_line_prefix - 4 ex. ='%t|%p|%a|%d|%u|%h| '
I've used that patch on 9.5.19

In elog.c there's    : const char *appname = application_name;  // line 2357
other cases have : const char *username = MyProcPort->user_name;
After adding 'MyProcPort->' to %a case  '|psql|' shows up like I
wanted .. but connection process Segfaults :/

I've tracked it to postinit.c - process_startup_options() - this loop
:  while (gucopts) {...}

gucopts = list_head(port->guc_options);
ereport(LOG, (errmsg(" +++ process_startup_options : [%s] ",
gucopts)));  // adding this line returns :

2019-10-15 14:28:03 CEST|9760|psql|postgres|postgres|[local]|
LOCATION:  PerformAuthentication, postinit.c:257
2019-10-15 14:28:03 CEST|9760|psql|postgres|postgres|[local]| LOG:
00000:  +++ process_startup_options : [local        all
all                                     trust]
2019-10-15 14:28:03 CEST|9760|psql|postgres|postgres|[local]|
LOCATION:  process_startup_options, postinit.c:1066

Sorry 4 nagging , any pointers much appreciated

On 10/11/19, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> This was changed about a year ago, see
>
> https://www.postgresql.org/message-id/flat/CAHJZqBB_Pxv8HRfoh%2BAB4KxSQQuPVvtYCzMg7woNR3r7dfmopw%40mail.gmail.com
>
> so v12 will do what you want.
>
>             regards, tom lane



Re: BUG #16049: log_line_prefix=%a and log_connections -application_name missing

От
death lock
Дата:
Not sure where I messed up yesterday , slimmed patch in attachment

--- postgresql-9.5.19/src/backend/utils/error/elog.c
+++ postgresql-9.5.19/src/backend/utils/error/elog.c
@@ -2354,7 +2354,9 @@
    case 'a':
      if (MyProcPort)
 {
-     const char *appname = application_name;
+
+   //    ereport(LOG, (errmsg(" ++ MyProcPort : [%s] ", application_name)));
+   const char *appname = MyProcPort->application_name;

adding 'MyProcPort->' works great for me
1. why appname =application_name doesn't produce err , but trying to
print application_name value -> SegFault ?

Вложения

Re: BUG #16049: log_line_prefix=%a and log_connections -application_name missing

От
Michael Paquier
Дата:
On Wed, Oct 16, 2019 at 01:42:20PM +0200, death lock wrote:
> Not sure where I messed up yesterday , slimmed patch in attachment

As Tom has mentioned on this thread, this has been committed to v12,
and it seems that this qualifies as a new feature so it won't be
back-patched.  FWIW, here is the actual commit, your patch could be
more refined based on it I guess:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=8bddc86400
--
Michael

Вложения