Subject: Capturing both IP address and hostname in the log

From: "Tefft, Michael J" <[email-masked]>
Date: Thu, 10 Apr 2025 12:22:16 +0000

The documentation for log_hostname says:
log_hostname (boolean)
By default, connection log messages only show the IP address of the connecting host. Turning this parameter on causes logging of the host name as well. Note that depending on your host name resolution setup this might impose a non-negligible performance penalty. This parameter can only be set in the postgresql.conf file or on the server command line.

https://www.postgresql.org/docs/14/runtime-config-logging.html

We have set log_hostname ON and we get hostname reported - but we do not get IP address. We would like to capture both.
Since the doc says "Turning this parameter on causes logging of the host name *as well*" we were hoping we would capture both, but we are not getting what we expect.

Is there a way to capture both IP address and hostname in the log messages? Or must we choose "one or the ootehr"?

Thanks,
Mike Tefft

(We are using PG14 and PG16, but the docs say the same thing, as does PG17)

---

From: Adrian Klaver <[email-masked]>
Date: Thu, 10 Apr 2025 08:22:56 -0700

On 4/10/25 05:22, Tefft, Michael J wrote:
> By default, connection log messages only show the IP address of the 
> connecting host. Turning this parameter on causes logging of the host 
> name as well. Note that depending on your host name resolution setup 
> this might impose a non-negligible performance penalty. This parameter 
> can only be set in the postgresql.conf file or on the server command line.
> 
> <https://www.postgresql.org/docs/14/runtime-config-logging.html>
> 
> We have set log_hostname ON and we get hostname reported – but we do not 
> get IP address. We would like to capture both.
> 
> Since the doc says “Turning this parameter on causes logging of the host 
> name **as well**” we were hoping we would capture both, but we are not 
> getting what we expect.
> 
> Is there a way to capture both IP address and hostname in the log 
> messages? Or must we choose “one or the ootehr”?

I see the same thing. It seems either or.

-- 
Adrian Klaver
[email-masked]

---

From: Tom Lane <[email-masked]>
Date: Thu, 10 Apr 2025 12:00:32 -0400

[ moving to -hackers ]

> I see the same thing. It seems either or.

Melanie recently committed a patch (9219093ca) that purports to
generalize our log_connections logging ability:

    Convert the boolean log_connections GUC into a list GUC comprised of the
    connection aspects to log.
    
    This gives users more control over the volume and kind of connection
    logging.
    
    The current log_connections options are 'receipt', 'authentication', and
    'authorization'. The empty string disables all connection logging. 'all'
    enables all available connection logging.

I wonder if it'd be reasonable to remove the separate log_hostname GUC
and fold it into this infrastructure, and while doing so make it
possible to log either or both of the client IP address and hostname.
(For that matter, I think there is interest in being able to capture
the server IP address too, cf 3516ea768.  You might wish to log the
IP address only once, not in every log line.)

			regards, tom lane

---

From: "David G. Johnston" <[email-masked]>
Date: Thu, 10 Apr 2025 09:33:39 -0700

On Thu, Apr 10, 2025 at 5:22 AM Tefft, Michael J <[email-masked]>
wrote:

> connecting host. Turning this parameter on causes logging of the host name
> as well. Note that depending on your host name resolution setup this might
> impose a non-negligible performance penalty. This parameter can only be set
> in the postgresql.conf file or on the server command line.
>
>
>
Yeah, the wording really should be more like:

diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index fea683cb49..c545fee6c9 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -7614,10 +7614,11 @@ local0.*    /var/log/postgresql
       </term>
       <listitem>
        <para>
-        By default, connection log messages only show the IP address of the
-        connecting host. Turning this parameter on causes logging of the
-        host name as well.  Note that depending on your host name
resolution
-        setup this might impose a non-negligible performance penalty.
+        By default, for TCP/IP-originated connections, the identifier of
the host
+        making the connection is its IP address.  Turning this parameter
on tells
+        the system to record the resolved host name instead.  Note that
depending
+        on your host name resolution setup this might impose a
non-negligible
+        performance penalty.
         This parameter can only be set in the
<filename>postgresql.conf</filename>
         file or on the server command line.
        </para>

Both the connection logging routine and log_line_prefix %h / %r simply
report the "identifier of the host making the connection".

David J.

---

From: "David G. Johnston" <[email-masked]>
Date: Thu, 10 Apr 2025 09:35:23 -0700

> > I see the same thing. It seems either or.

cross-posting to -hackers now that it is here.

v19 plans aside the existing wording is incorrect (just here, other places
correctly point out the either-or aspect of the output).

The wording really should be more like:

David J.

---

From: Melanie Plageman <[email-masked]>
Date: Tue, 20 May 2025 11:48:13 -0400

> IP address only once, not in every log line.)

Seems reasonable to me. I'd be willing to move such a thing forward but
would want to see the feature requestors' specific desired behavior (e.g.
an option for each of hostname, client ip address, and server address?).
Also, if they write a WIP patch at least to config.sgml, it would also help
me gauge how serious of a request it is or, rather, how satisfactory a
solution a log_connections option is.

Perhaps there are people who absolutely love log_hostname and don't want to
see it deprecated as a separate GUC?

I also think folding in log_disconnections as a "disconnection" option
makes sense. I do have some anxiety that a very long list of options will
anger users -- but I suppose that ship mostly sailed.

- Melanie