diff --git a/src/test/perl/PostgreSQL/Test/SimpleTee.pm b/src/test/perl/PostgreSQL/Test/SimpleTee.pm
index bb9d79a755..432a458d09 100644
--- a/src/test/perl/PostgreSQL/Test/SimpleTee.pm
+++ b/src/test/perl/PostgreSQL/Test/SimpleTee.pm
@@ -14,6 +14,18 @@ package PostgreSQL::Test::SimpleTee;
 use strict;
 use warnings;
 
+my $start_time;
+
+BEGIN { $start_time = time; }
+
+sub _time_str
+{
+    my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
+      localtime(time);
+    return sprintf("[%.2d:%.2d:%.2d](%ds) ",
+				   $hour, $min, $sec,  time - $start_time);
+}
+
 sub TIEHANDLE
 {
 	my $self = shift;
@@ -24,10 +36,13 @@ sub PRINT
 {
 	my $self = shift;
 	my $ok   = 1;
+	# skip the timestamp on the first file handle so PROVE doesn't get upset
+	my $skip = 1;
 	for my $fh (@$self)
 	{
-		print $fh @_ or $ok = 0;
+		print $fh ($skip ? "" :_time_str), @_ or $ok = 0;
 		$fh->flush   or $ok = 0;
+		$skip = 0;
 	}
 	return $ok;
 }
