Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o0e6q-00067V-8x for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Jun 2022 07:03:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1o0e6o-0002DQ-Ro for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Jun 2022 07:03:34 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o0e6o-0002DH-5p for pgsql-hackers@lists.postgresql.org; Mon, 13 Jun 2022 07:03:34 +0000 Received: from xvm-110-146.dc2.ghst.net ([46.226.110.146] helo=fetter.org) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1o0e6k-00053M-QF for pgsql-hackers@postgresql.org; Mon, 13 Jun 2022 07:03:33 +0000 Received: by fetter.org (Postfix, from userid 1001) id 90C114185E; Mon, 13 Jun 2022 07:03:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fetter.org; s=default; t=1655103808; bh=ZzR3MGPpgjPajE2Uwj9/Y7IDwr7q6WolMK/AbC5VqEo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=wX2AXpOa6NcfxmleWCmTUv5H4Jpp00WI35TnJ/LnsGhQP6sfP62ELuMIKYJQAUP3c aeprD2BRB8A/7ezNOBVwgC4dLS+rE5o8EVDgz3jWAC1s+nXNVgUR5LyQlNxOdXOTha mGlXnNHySWFWOy0vgGRkhdPEvI3PIU45mqAnSs08tmmGHjKuSAprh+ogAcFpe8t+cv aze23bVbKq661J0Y/kbjKZlX5xmwQld1fD7jpErMODBl/aoSvbpW9pmUhGQUx6lwJF Q+RixjC05SGgbfPeXI/cE34XDmzfk8Y5hD+W6P4QliApSK2GIqyzFnhl1QQWMyYLAp 9jt0lVqs6kGCQ== Date: Mon, 13 Jun 2022 07:03:27 +0000 From: David Fetter To: Dagfinn Ilmari =?iso-8859-1?Q?Manns=E5ker?= Cc: Justin Pryzby , pgsql-hackers@postgresql.org Subject: Re: Finer grain log timestamps Message-ID: <20220613070327.GC12494@fetter.org> References: <20220508204451.GC11333@fetter.org> <20220508211227.GP28830@telsasoft.com> <20220508220222.GD11333@fetter.org> <875ymfnh09.fsf@wibble.ilmari.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="5/uDoXvLw7AC5HRs" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <875ymfnh09.fsf@wibble.ilmari.org> User-Agent: Mutt/1.9.4 (2018-02-28) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --5/uDoXvLw7AC5HRs Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit On Mon, May 09, 2022 at 11:21:26AM +0100, Dagfinn Ilmari Mannsåker wrote: > David Fetter writes: > > > diff --git src/backend/utils/error/elog.c src/backend/utils/error/elog.c > > index 55ee5423af..4698e32ab7 100644 > > --- src/backend/utils/error/elog.c > > +++ src/backend/utils/error/elog.c > > @@ -2295,7 +2295,7 @@ char * > > get_formatted_log_time(void) > > { > > pg_time_t stamp_time; > > - char msbuf[13]; > > + char msbuf[16]; > > Now that it holds microseconds (µs), not milliseconds (ms), should it > not be renamed to `usbuf`? Good point. Best, David. -- David Fetter http://fetter.org/ Phone: +1 415 235 3778 Remember to vote! Consider donating to Postgres: http://www.postgresql.org/about/donate --5/uDoXvLw7AC5HRs Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0001-Change-log-timestamps-from-milli-to-microseconds.patch" From 9283d9ae4d8d10876aee1da0753e7db4257e7a11 Mon Sep 17 00:00:00 2001 From: David Fetter Date: Mon, 13 Jun 2022 00:01:04 -0700 Subject: [PATCH v3] Change log timestamps from milli- to microseconds --- doc/src/sgml/config.sgml | 12 ++++++------ doc/src/sgml/file-fdw.sgml | 2 +- src/backend/utils/error/elog.c | 14 +++++++------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git doc/src/sgml/config.sgml doc/src/sgml/config.sgml index 5b7ce6531d..adc4fc090a 100644 --- doc/src/sgml/config.sgml +++ doc/src/sgml/config.sgml @@ -7174,17 +7174,17 @@ local0.* /var/log/postgresql %t - Time stamp without milliseconds + Time stamp at second resolution no %m - Time stamp with milliseconds + Time stamp with microseconds no %n - Time stamp with milliseconds (as a Unix epoch) + Time stamp with microseconds (as a Unix epoch) no @@ -7526,7 +7526,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' This option emits log lines in comma-separated-values (CSV) format, with these columns: - time stamp with milliseconds, + time stamp with microseconds, user name, database name, process ID, @@ -7557,7 +7557,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' CREATE TABLE postgres_log ( - log_time timestamp(3) with time zone, + log_time timestamp(6) with time zone, user_name text, database_name text, process_id integer, @@ -7682,7 +7682,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; timestamp string - Time stamp with milliseconds + Time stamp with microseconds user diff --git doc/src/sgml/file-fdw.sgml doc/src/sgml/file-fdw.sgml index 5b98782064..c3efcbd679 100644 --- doc/src/sgml/file-fdw.sgml +++ doc/src/sgml/file-fdw.sgml @@ -242,7 +242,7 @@ CREATE SERVER pglog FOREIGN DATA WRAPPER file_fdw; CREATE FOREIGN TABLE pglog ( - log_time timestamp(3) with time zone, + log_time timestamp(6) with time zone, user_name text, database_name text, process_id integer, diff --git src/backend/utils/error/elog.c src/backend/utils/error/elog.c index 55ee5423af..1ee49ce2be 100644 --- src/backend/utils/error/elog.c +++ src/backend/utils/error/elog.c @@ -2295,7 +2295,7 @@ char * get_formatted_log_time(void) { pg_time_t stamp_time; - char msbuf[13]; + char usbuf[16]; /* leave if already computed */ if (formatted_log_time[0] != '\0') @@ -2315,13 +2315,13 @@ get_formatted_log_time(void) * nonempty or CSV mode can be selected. */ pg_strftime(formatted_log_time, FORMATTED_TS_LEN, - /* leave room for milliseconds... */ - "%Y-%m-%d %H:%M:%S %Z", + /* leave room for microseconds... */ + "%Y-%m-%d %H:%M:%S %Z", pg_localtime(&stamp_time, log_timezone)); /* 'paste' milliseconds into place... */ - sprintf(msbuf, ".%03d", (int) (saved_timeval.tv_usec / 1000)); - memcpy(formatted_log_time + 19, msbuf, 4); + sprintf(usbuf, ".%06d", saved_timeval.tv_usec ); + memcpy(formatted_log_time + 19, usbuf, 7); return formatted_log_time; } @@ -2652,9 +2652,9 @@ log_line_prefix(StringInfo buf, ErrorData *edata) saved_timeval_set = true; } - snprintf(strfbuf, sizeof(strfbuf), "%ld.%03d", + snprintf(strfbuf, sizeof(strfbuf), "%ld.%06d", (long) saved_timeval.tv_sec, - (int) (saved_timeval.tv_usec / 1000)); + saved_timeval.tv_usec); if (padding != 0) appendStringInfo(buf, "%*s", padding, strfbuf); -- 2.36.1 --5/uDoXvLw7AC5HRs--