diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c index c80c8d8..02d30ac 100644 --- a/src/backend/postmaster/syslogger.c +++ b/src/backend/postmaster/syslogger.c @@ -1171,6 +1171,8 @@ logfile_rotate(bool time_based_rotation, int size_rotation_for) char *csvfilename = NULL; pg_time_t fntime; FILE *fh; + bit rotate_csvlog; + bit rotate_stderr; rotation_requested = false; @@ -1195,7 +1197,9 @@ logfile_rotate(bool time_based_rotation, int size_rotation_for) * * Note: last_file_name should never be NULL here, but if it is, append. */ - if (time_based_rotation || (size_rotation_for & LOG_DESTINATION_STDERR)) + rotate_stderr = time_based_rotation || + (size_rotation_for & LOG_DESTINATION_STDERR); + if (rotate_stderr) { if (Log_truncate_on_rotation && time_based_rotation && last_file_name != NULL && @@ -1226,8 +1230,6 @@ logfile_rotate(bool time_based_rotation, int size_rotation_for) return; } - logfile_writename(filename, csvfilename); - fclose(syslogFile); syslogFile = fh; @@ -1239,8 +1241,10 @@ logfile_rotate(bool time_based_rotation, int size_rotation_for) } /* Same as above, but for csv file. */ - if (csvlogFile != NULL && - (time_based_rotation || (size_rotation_for & LOG_DESTINATION_CSVLOG))) + rotate_csvlog = csvlogFile != NULL && + (time_based_rotation || + (size_rotation_for & LOG_DESTINATION_CSVLOG)); + if (rotate_csvlog) { if (Log_truncate_on_rotation && time_based_rotation && last_csv_file_name != NULL && @@ -1271,8 +1275,6 @@ logfile_rotate(bool time_based_rotation, int size_rotation_for) return; } - logfile_writename(last_file_name, csvfilename); - fclose(csvlogFile); csvlogFile = fh; @@ -1283,6 +1285,9 @@ logfile_rotate(bool time_based_rotation, int size_rotation_for) csvfilename = NULL; } + if (rotate_stderr || rotate_csvlog) + logfile_writename(last_file_name, last_csv_file_name); + if (filename) pfree(filename); if (csvfilename)