OSDN Git Service

This patch against 8.0.0beta1 source adds log_line_prefix options for
authorBruce Momjian <bruce@momjian.us>
Thu, 9 Jun 2005 22:29:52 +0000 (22:29 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 9 Jun 2005 22:29:52 +0000 (22:29 +0000)
millisecond timestamps (%m) and remote host (%h). The milliseconds are
useful for QPS measurements.

Ed L.

doc/src/sgml/runtime.sgml
src/backend/utils/error/elog.c
src/backend/utils/misc/postgresql.conf.sample

index e1ffd22..216e8f7 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.322 2005/06/04 20:42:41 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.323 2005/06/09 22:29:52 momjian Exp $
 -->
 
 <chapter Id="runtime">
@@ -2830,6 +2830,11 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Windows
              <entry>yes</entry>
             </row>
             <row>
+             <entry><literal>%h</literal></entry>
+             <entry>Remote Hostname or IP address</entry>
+             <entry>yes</entry>
+            </row>
+            <row>
              <entry><literal>%p</literal></entry>
              <entry>Process ID</entry>
              <entry>no</entry>
@@ -2840,6 +2845,11 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Windows
              <entry>no</entry>
             </row>
             <row>
+             <entry><literal>%m</literal></entry>
+             <entry>Timestamp with milliseconds</entry>
+             <entry>no</entry>
+            </row>
+            <row>
              <entry><literal>%i</literal></entry>
              <entry>Command tag: This is the command that generated the log line.</entry>
              <entry>yes</entry>
index 5dd564e..122a0a9 100644 (file)
@@ -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 */
index d54ae5f..e68f82b 100644 (file)
 #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