Re: logging enhancements, minor code cleanup - Mailing list pgsql-patches

From Neil Conway
Subject Re: logging enhancements, minor code cleanup
Date
Msg-id 20030810204050.GA29387@home.samurai.com
Whole thread Raw
In response to logging enhancements, minor code cleanup  (Andrew Dunstan <andrew@dunslane.net>)
Responses Re: logging enhancements, minor code cleanup
List pgsql-patches
On Sat, Aug 09, 2003 at 07:22:56PM -0400, Andrew Dunstan wrote:
> The attached patch does 3 things:
>
> . logs connection ends if log_connections = true

Should this be a separate GUC variable? Personally, I'd rather not have
my log files bloated with info on both the beginning *and* the end of
each connection.

> . provides a new option "log_line_format" which allows addition of extra
> information on a log line before the keyword.

This patch should also update the documentation.

Some minor stylistic comments follow...

> Index: backend/tcop/postgres.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/backend/tcop/postgres.c,v
> retrieving revision 1.357
> diff -c -w -r1.357 postgres.c
> *** backend/tcop/postgres.c    6 Aug 2003 17:46:45 -0000    1.357
> --- backend/tcop/postgres.c    9 Aug 2003 21:17:13 -0000
> +     gettimeofday(&end,NULL);
> +     if (end.tv_usec < port->session_start.tv_usec)
> +     {
> +         end.tv_sec--;
> +         end.tv_usec += 1000000;
> +     }
> +     end.tv_sec -= port->session_start.tv_sec;

Can you add an assertion that end.tv_sec >= port->session_start.tv_sec before
this line, please?

> Index: backend/utils/error/elog.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/backend/utils/error/elog.c,v
> retrieving revision 1.119
> diff -c -w -r1.119 elog.c
> *** backend/utils/error/elog.c    8 Aug 2003 21:42:11 -0000    1.119
> --- backend/utils/error/elog.c    9 Aug 2003 21:17:14 -0000
> ***************
> *** 1019,1024 ****
> --- 1021,1089 ----
>   }
>   #endif   /* HAVE_SYSLOG */
>
> + /*
> +  * Formatted extra info for log if option is set and we have a data,
> +  * or empty string otherwise.
> +  */

This comment is a little awkward: "we have a data"?

> + static const char *
> + log_line_extra(void)
> + {
> +     /* space for option string + 2 identifiers */
> +     /* Note: if more identifers are built in this will have to increase */

"Identifier" is incorrectly spelled.

> +     static char *result = NULL;

Why is this static? IMHO it would be much cleaner to just return a palloc'ed
string.

> +     int flen = strlen(Log_line_format_str);
> +     int i,j;
> +     int tlen = 2*NAMEDATALEN + flen +3 ;

Can we choose some more helpful variable names than "flen" and
"tlen", please? Also, you can move the declaration of i & j to
the scope of the if statement.

> +     {
> +         char * dbname = MyProcPort->database_name;
> +         char * username = MyProcPort->user_name;
> +         if (dbname == NULL)
> +             dbname="";
> +         if (username == NULL)
> +             username = "";

Could either of these ever be NULL?

> diff -c -w -r1.87 postgresql.conf.sample
> *** backend/utils/misc/postgresql.conf.sample    29 Jul 2003 00:03:18 -0000    1.87
> --- backend/utils/misc/postgresql.conf.sample    9 Aug 2003 21:17:15 -0000
> ***************
> *** 173,178 ****
> --- 173,179 ----
>   #log_connections = false
>   #log_duration = false
>   #log_pid = false
> + #log_line_format = '<%U~%D>'     # %U=username %D=databasename %%=%

Shouldn't the commented-out line have the default value? (which is "", right?)

-Neil


pgsql-patches by date:

Previous
From: Andrew Dunstan
Date:
Subject: logging enhancements, minor code cleanup
Next
From: Andrew Dunstan
Date:
Subject: Re: logging enhancements, minor code cleanup