From 246068e8c288a5685ac7f1cdf0faa9af2059422c Mon Sep 17 00:00:00 2001 From: Tatsuo Ishii Date: Tue, 13 Jul 2021 19:34:28 +0900 Subject: [PATCH] Add support for log time stamp with milliseconds. --- doc.ja/src/sgml/connection-pooling.sgml | 10 +++++---- doc/src/sgml/connection-pooling.sgml | 7 ++++++- src/utils/error/elog.c | 27 ++++++++++++++++++++++--- 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/doc.ja/src/sgml/connection-pooling.sgml b/doc.ja/src/sgml/connection-pooling.sgml index 44fb6cd32..8f510a19d 100644 --- a/doc.ja/src/sgml/connection-pooling.sgml +++ b/doc.ja/src/sgml/connection-pooling.sgml @@ -1345,10 +1345,12 @@ local0.* /var/log/pgpool.log %t - - タイムスタンプ + ミリ秒なしのタイムスタンプ + + + + %m + ミリ秒付きのタイムスタンプ diff --git a/doc/src/sgml/connection-pooling.sgml b/doc/src/sgml/connection-pooling.sgml index c4a569f38..1c4ba9420 100644 --- a/doc/src/sgml/connection-pooling.sgml +++ b/doc/src/sgml/connection-pooling.sgml @@ -873,7 +873,12 @@ %t - Time stamp + Time stamp without milliseconds + + + + %m + Time stamp with milliseconds diff --git a/src/utils/error/elog.c b/src/utils/error/elog.c index 5e19331e8..88df48ee6 100644 --- a/src/utils/error/elog.c +++ b/src/utils/error/elog.c @@ -43,7 +43,7 @@ * overflow.) * * - * Portions Copyright (c) 2003-2018, PgPool Global Development Group + * Portions Copyright (c) 2003-2021, PgPool Global Development Group * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * @@ -2000,6 +2000,8 @@ log_line_prefix(StringInfo buf, const char *line_prefix, ErrorData *edata) POOL_CONNECTION *frontend = NULL; POOL_SESSION_CONTEXT *session = pool_get_session_context(true); + char strbuf[129]; + if (session) frontend = session->frontend; @@ -2122,10 +2124,29 @@ log_line_prefix(StringInfo buf, const char *line_prefix, ErrorData *edata) break; case 't': { - char strbuf[129]; time_t now = time(NULL); - strftime(strbuf, 128, "%Y-%m-%d %H:%M:%S", localtime(&now)); + strftime(strbuf, sizeof(strbuf), "%Y-%m-%d %H:%M:%S", localtime(&now)); + + if (padding != 0) + appendStringInfo(buf, "%*s", padding, strbuf); + else + appendStringInfoString(buf, strbuf); + } + break; + case 'm': + { + struct timeval timeval; + time_t seconds; + struct tm *now; + char msbuf[13]; + + gettimeofday(&timeval, NULL); + seconds = timeval.tv_sec; + now = localtime(&seconds); + strftime(strbuf, sizeof(strbuf), "%Y-%m-%d %H:%M:%S", now); + snprintf(msbuf, sizeof(msbuf), ".%03d", (int) (timeval.tv_usec / 1000)); + memcpy(strbuf + 19, msbuf, 4); if (padding != 0) appendStringInfo(buf, "%*s", padding, strbuf); -- 2.39.5