From 6c2ba14d8d1e20251680de3972991c574a9dcfaa Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 9 Jun 2005 22:29:52 +0000 Subject: [PATCH] This patch against 8.0.0beta1 source adds log_line_prefix options for millisecond timestamps (%m) and remote host (%h). The milliseconds are useful for QPS measurements. Ed L. --- doc/src/sgml/runtime.sgml | 12 ++++++- src/backend/utils/error/elog.c | 33 ++++++++++++++++++- src/backend/utils/misc/postgresql.conf.sample | 3 +- 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index e1ffd22c5a..216e8f7e9a 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1,5 +1,5 @@ @@ -2829,6 +2829,11 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Windows Remote host name or IP address, and remote port yes + + %h + Remote Hostname or IP address + yes + %p Process ID @@ -2839,6 +2844,11 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Windows Time stamp no + + %m + Timestamp with milliseconds + no + %i Command tag: This is the command that generated the log line. diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 5dd564ef28..122a0a92a5 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -42,7 +42,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.158 2005/03/12 01:54:44 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.159 2005/06/09 22:29:52 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1375,6 +1375,33 @@ log_line_prefix(StringInfo buf) case 'l': appendStringInfo(buf, "%ld", log_line_number); break; + case 'm': + { + time_t stamp_time; + char strfbuf[128], msbuf[5]; + struct timeval tv; + + gettimeofday(&tv, NULL); + stamp_time = tv.tv_sec; + + strftime(strfbuf, sizeof(strfbuf), + /* leave room for milliseconds... */ + /* Win32 timezone names are too long so don't print them. */ +#ifndef WIN32 + "%Y-%m-%d %H:%M:%S %Z", +#else + "%Y-%m-%d %H:%M:%S ", +#endif + localtime(&stamp_time)); + + /* 'paste' milliseconds into place... */ + sprintf(msbuf, ".%03d", + (int)(tv.tv_usec/1000)); + strncpy(strfbuf+19, msbuf, 4); + + appendStringInfoString(buf, strfbuf); + } + break; case 't': { /* @@ -1426,6 +1453,10 @@ log_line_prefix(StringInfo buf) MyProcPort->remote_port); } break; + case 'h': + if (MyProcPort) + appendStringInfo(buf, "%s", MyProcPort->remote_host); + break; case 'q': /* in postmaster and friends, stop if %q is seen */ /* in a backend, just ignore */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index d54ae5fcfd..e68f82bb3c 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -241,8 +241,9 @@ #log_duration = false #log_line_prefix = '' # e.g. '<%u%%%d> ' # %u=user name %d=database name - # %r=remote host and port + # %r=remote host and port %h=remote host # %p=PID %t=timestamp %i=command tag + # %m=timestamp with milliseconds # %c=session id %l=session line number # %s=session start timestamp %x=transaction id # %q=stop here in non-session processes