Re: Log message for GSS connection is missing once connection authorization is successful.
Euler Taveira <euler.taveira@2ndquadrant.com>
From: Euler Taveira <euler.taveira@2ndquadrant.com>
To: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Cc: vignesh C <vignesh21@gmail.com>, Stephen Frost <sfrost@snowman.net>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2020-10-31T22:03:58Z
Lists: pgsql-hackers
On Sat, 31 Oct 2020 at 00:34, Bharath Rupireddy < bharath.rupireddyforpostgres@gmail.com> wrote: > On Fri, Oct 30, 2020 at 6:35 PM Euler Taveira > <euler.taveira@2ndquadrant.com> wrote: > > > > + appendStringInfo(&logmsg, "replication "); > > + > > + appendStringInfo(&logmsg, "connection authorized: user=%s", > > + port->user_name); > > + if (!am_walsender) > > + appendStringInfo(&logmsg, " database=%s", port->database_name); > > + > > + if (port->application_name != NULL) > > + appendStringInfo(&logmsg, " application_name=%s", > > + port->application_name); > > + > > > > Your approach breaks localization. You should use multiple errmsg. > > > > IIUC, isn't it enough calling a single errmsg() inside ereport() with > the prepared logmsg.data (which is a string)? The errmsg() function > will do the required translation of the logmsg.data. Why do we need > multiple errmsg() calls? Could you please elaborate a bit on how the > way currently it is done in the patch breaks localization? > > No. The strings are specified in the appendStringInfo, hence you should add _() around the string to be translated. There is nothing to be translated if you specify only the format identifier. You can always test if gettext extracts the string to be translated by executing 'make update-po' (after specifying --enable-nls in the configure). Search for your string in one of the generated files (po/LL.po.new). You shouldn't split messages like that because not all languages have the same order as English. Having said that you risk providing a nonsense translation because someone decided to translate pieces of a sentence separately. + appendStringInfo(&logmsg, "replication "); + + appendStringInfo(&logmsg, "connection authorized: user=%s", + port->user_name); This hunk will break translation. In Portuguese, the adjective "replication" is translated after the noun "connection". If you decided to keep this code as is, the printed message won't follow the grammar rules. You will have "replicação conexão autorizada" instead of "conexão de replicação autorizada". The former isn't grammatically correct. Avoid splitting sentences that are translated. -- Euler Taveira http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Simplify TAP tests of kerberos with expected log file contents
- 11e1577a576f 14.0 landed
-
Add GSS information to connection authorized log message
- dc11f31a1a89 14.0 landed