diff --git a/src/bin/pg_basebackup/t/010_pg_basebackup.pl b/src/bin/pg_basebackup/t/010_pg_basebackup.pl
index 5991cf77f4adbf17ad71ce58946aa33e40343da3..a2750773fa7a8bf5a4156bc0f9ec2573859c818b 100644
--- a/src/bin/pg_basebackup/t/010_pg_basebackup.pl
+++ b/src/bin/pg_basebackup/t/010_pg_basebackup.pl
@@ -12,7 +12,7 @@ program_options_handling_ok('pg_basebackup');
 
 my $tempdir = TestLib::tempdir;
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 
 # Initialize node without replication settings
 $node->init(hba_permit_replication => 0);
diff --git a/src/bin/pg_controldata/t/001_pg_controldata.pl b/src/bin/pg_controldata/t/001_pg_controldata.pl
index 073815aff686ba7d3a7dd62f75220b6ec1b3a9ec..40405516cad3eb3e7c21d5ca1129fd0332343d07 100644
--- a/src/bin/pg_controldata/t/001_pg_controldata.pl
+++ b/src/bin/pg_controldata/t/001_pg_controldata.pl
@@ -11,7 +11,7 @@ command_fails(['pg_controldata'], 'pg_controldata without arguments fails');
 command_fails([ 'pg_controldata', 'nonexistent' ],
 	'pg_controldata with nonexistent directory fails');
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 
 command_like([ 'pg_controldata', $node->data_dir ],
diff --git a/src/bin/pg_ctl/t/002_status.pl b/src/bin/pg_ctl/t/002_status.pl
index f1c131bd26f2626a4185696c89147412f87e12e9..98e171e394feadbf462ed942b64c2813bf265439 100644
--- a/src/bin/pg_ctl/t/002_status.pl
+++ b/src/bin/pg_ctl/t/002_status.pl
@@ -11,7 +11,7 @@ my $tempdir_short = TestLib::tempdir_short;
 command_exit_is([ 'pg_ctl', 'status', '-D', "$tempdir/nonexistent" ],
 	4, 'pg_ctl status with nonexistent directory');
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 
 command_exit_is([ 'pg_ctl', 'status', '-D', $node->data_dir ],
diff --git a/src/bin/pg_rewind/RewindTest.pm b/src/bin/pg_rewind/RewindTest.pm
index 41d294ed3f657ed3dbea7672522b2b161a13b542..68834cd6a446e376e8f564496e631a44402d67d1 100644
--- a/src/bin/pg_rewind/RewindTest.pm
+++ b/src/bin/pg_rewind/RewindTest.pm
@@ -116,7 +116,7 @@ sub setup_cluster
 {
 
 	# Initialize master, data checksums are mandatory
-	$node_master = get_new_node();
+	$node_master = get_new_node('master');
 	$node_master->init;
 
 	# Custom parameters for master's postgresql.conf
@@ -144,7 +144,7 @@ sub start_master
 
 sub create_standby
 {
-	$node_standby = get_new_node();
+	$node_standby = get_new_node('standby');
 	$node_master->backup('my_backup');
 	$node_standby->init_from_backup($node_master, 'my_backup');
 	my $connstr_master = $node_master->connstr('postgres');
diff --git a/src/bin/scripts/t/010_clusterdb.pl b/src/bin/scripts/t/010_clusterdb.pl
index 5131b35d82b460b05d6d993658c3be13c66dec93..11d678a86768336c104256309f1aa9f5ce609199 100644
--- a/src/bin/scripts/t/010_clusterdb.pl
+++ b/src/bin/scripts/t/010_clusterdb.pl
@@ -9,7 +9,7 @@ program_help_ok('clusterdb');
 program_version_ok('clusterdb');
 program_options_handling_ok('clusterdb');
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/011_clusterdb_all.pl b/src/bin/scripts/t/011_clusterdb_all.pl
index 15cd30cf4a1f22f96ae366b69640002120d5dacc..efd541bc4d65613f329b529fb5f14c7380e022e2 100644
--- a/src/bin/scripts/t/011_clusterdb_all.pl
+++ b/src/bin/scripts/t/011_clusterdb_all.pl
@@ -5,7 +5,7 @@ use PostgresNode;
 use TestLib;
 use Test::More tests => 2;
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/020_createdb.pl b/src/bin/scripts/t/020_createdb.pl
index e0cf860058577e5df30da3b6fc2a8a03ef0088d4..c0f6067a923e9f4a10730bff4eae2ea9d3fb8e27 100644
--- a/src/bin/scripts/t/020_createdb.pl
+++ b/src/bin/scripts/t/020_createdb.pl
@@ -9,7 +9,7 @@ program_help_ok('createdb');
 program_version_ok('createdb');
 program_options_handling_ok('createdb');
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/030_createlang.pl b/src/bin/scripts/t/030_createlang.pl
index 4097f03da99790800bf7a099f405bff34d6857e6..38e351670d0731b58296b3b449c6b79117929a59 100644
--- a/src/bin/scripts/t/030_createlang.pl
+++ b/src/bin/scripts/t/030_createlang.pl
@@ -9,7 +9,7 @@ program_help_ok('createlang');
 program_version_ok('createlang');
 program_options_handling_ok('createlang');
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/040_createuser.pl b/src/bin/scripts/t/040_createuser.pl
index fcada6338c6a1cc41b68c79cda5c66ec9920f237..5b3309e9c12c4472451693c8c31c78ab4fff0231 100644
--- a/src/bin/scripts/t/040_createuser.pl
+++ b/src/bin/scripts/t/040_createuser.pl
@@ -9,7 +9,7 @@ program_help_ok('createuser');
 program_version_ok('createuser');
 program_options_handling_ok('createuser');
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/050_dropdb.pl b/src/bin/scripts/t/050_dropdb.pl
index 2adc80a03f7234c78c9b3e3b1efb4a22ea1591f4..fb4f6564811b7377a3f0ced54e44ade5bab0abea 100644
--- a/src/bin/scripts/t/050_dropdb.pl
+++ b/src/bin/scripts/t/050_dropdb.pl
@@ -9,7 +9,7 @@ program_help_ok('dropdb');
 program_version_ok('dropdb');
 program_options_handling_ok('dropdb');
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/060_droplang.pl b/src/bin/scripts/t/060_droplang.pl
index 722804747ede21ad5dcaf38ec3750e14eb9c012c..904cea2d4bdb0f3e39e6ebd700c55603fc97cb00 100644
--- a/src/bin/scripts/t/060_droplang.pl
+++ b/src/bin/scripts/t/060_droplang.pl
@@ -9,7 +9,7 @@ program_help_ok('droplang');
 program_version_ok('droplang');
 program_options_handling_ok('droplang');
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/070_dropuser.pl b/src/bin/scripts/t/070_dropuser.pl
index 0849f77ed672fcfbed5bcb1d1c87aff7109675f4..22079f6742ca38f824f05d7bf31ac401e4b99280 100644
--- a/src/bin/scripts/t/070_dropuser.pl
+++ b/src/bin/scripts/t/070_dropuser.pl
@@ -9,7 +9,7 @@ program_help_ok('dropuser');
 program_version_ok('dropuser');
 program_options_handling_ok('dropuser');
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/080_pg_isready.pl b/src/bin/scripts/t/080_pg_isready.pl
index 8f3f25cc3643863fa9b262b5d72c82d72df09236..d9830b5b3adcfcdae50686997c0dadbef109cb51 100644
--- a/src/bin/scripts/t/080_pg_isready.pl
+++ b/src/bin/scripts/t/080_pg_isready.pl
@@ -11,7 +11,7 @@ program_options_handling_ok('pg_isready');
 
 command_fails(['pg_isready'], 'fails with no server running');
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/090_reindexdb.pl b/src/bin/scripts/t/090_reindexdb.pl
index fd4eac347e1647cb7792f75b29323d8448f8f912..7f57af8e3912b5cfaa94ce037475b049d5a9cf52 100644
--- a/src/bin/scripts/t/090_reindexdb.pl
+++ b/src/bin/scripts/t/090_reindexdb.pl
@@ -9,7 +9,7 @@ program_help_ok('reindexdb');
 program_version_ok('reindexdb');
 program_options_handling_ok('reindexdb');
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/091_reindexdb_all.pl b/src/bin/scripts/t/091_reindexdb_all.pl
index d47b18b98926a468cc089ca40d330a31b1232ec3..8e6041460c5c8939a5bf8d80d0211268fd9b1f37 100644
--- a/src/bin/scripts/t/091_reindexdb_all.pl
+++ b/src/bin/scripts/t/091_reindexdb_all.pl
@@ -4,7 +4,7 @@ use warnings;
 use PostgresNode;
 use Test::More tests => 2;
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/100_vacuumdb.pl b/src/bin/scripts/t/100_vacuumdb.pl
index 387d2b41e2309ee80334e329910221d06692bd42..c183ccb6a1903ae3e5fea77c657b46b334cd4179 100644
--- a/src/bin/scripts/t/100_vacuumdb.pl
+++ b/src/bin/scripts/t/100_vacuumdb.pl
@@ -9,7 +9,7 @@ program_help_ok('vacuumdb');
 program_version_ok('vacuumdb');
 program_options_handling_ok('vacuumdb');
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/101_vacuumdb_all.pl b/src/bin/scripts/t/101_vacuumdb_all.pl
index 8f1536f44feb97496c773327691707c004317988..43212587e5ab7204d3b646a00a57a13c8352cf9b 100644
--- a/src/bin/scripts/t/101_vacuumdb_all.pl
+++ b/src/bin/scripts/t/101_vacuumdb_all.pl
@@ -4,7 +4,7 @@ use warnings;
 use PostgresNode;
 use Test::More tests => 2;
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/bin/scripts/t/102_vacuumdb_stages.pl b/src/bin/scripts/t/102_vacuumdb_stages.pl
index 4cb5b64877d07ae772975f1249ebc9e2977ffd4a..1300aa790574cc5a4686a527a32361d8e9956627 100644
--- a/src/bin/scripts/t/102_vacuumdb_stages.pl
+++ b/src/bin/scripts/t/102_vacuumdb_stages.pl
@@ -4,7 +4,7 @@ use warnings;
 use PostgresNode;
 use Test::More tests => 4;
 
-my $node = get_new_node();
+my $node = get_new_node('main');
 $node->init;
 $node->start;
 
diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm
index 0632be25ca6b25188a990abce4d99c75fa500b11..6152c601bdc2830631b99e887b06162420663bb1 100644
--- a/src/test/perl/PostgresNode.pm
+++ b/src/test/perl/PostgresNode.pm
@@ -43,6 +43,7 @@ INIT
 sub new
 {
 	my $class  = shift;
+	my $name   = shift;
 	my $pghost = shift;
 	my $pgport = shift;
 	my $testname = basename($0);
@@ -51,8 +52,8 @@ sub new
 		_port     => $pgport,
 		_host     => $pghost,
 		_basedir  => TestLib::tempdir,
-		_applname => "node_$pgport",
-		_logfile  => "$TestLib::log_path/${testname}_node_${pgport}.log" };
+		_name     => $name,
+		_logfile  => "$TestLib::log_path/${testname}_${name}.log" };
 
 	bless $self, $class;
 	$self->dump_info;
@@ -78,10 +79,10 @@ sub basedir
 	return $self->{_basedir};
 }
 
-sub applname
+sub name
 {
 	my ($self) = @_;
-	return $self->{_applname};
+	return $self->{_name};
 }
 
 sub logfile
@@ -127,11 +128,11 @@ sub backup_dir
 sub dump_info
 {
 	my ($self) = @_;
+	print "Name: " . $self->name . "\n";
 	print "Data directory: " . $self->data_dir . "\n";
 	print "Backup directory: " . $self->backup_dir . "\n";
 	print "Archive directory: " . $self->archive_dir . "\n";
 	print "Connection string: " . $self->connstr . "\n";
-	print "Application name: " . $self->applname . "\n";
 	print "Log file: " . $self->logfile . "\n";
 }
 
@@ -178,7 +179,7 @@ sub init
 	TestLib::system_or_bail($ENV{PG_REGRESS}, '--config-auth', $pgdata);
 
 	open my $conf, ">>$pgdata/postgresql.conf";
-	print $conf "\n# Added by PostgresNode.pm)\n";
+	print $conf "\n# Added by PostgresNode.pm\n";
 	print $conf "fsync = off\n";
 	print $conf "log_statement = all\n";
 	print $conf "port = $port\n";
@@ -210,8 +211,9 @@ sub backup
 	my ($self, $backup_name) = @_;
 	my $backup_path = $self->backup_dir . '/' . $backup_name;
 	my $port        = $self->port;
+	my $name        = $self->name;
 
-	print "# Taking backup $backup_name from node with port $port\n";
+	print "# Taking backup $backup_name from node \"$name\"\n";
 	TestLib::system_or_bail("pg_basebackup -D $backup_path -p $port -x");
 	print "# Backup finished\n";
 }
@@ -221,11 +223,13 @@ sub init_from_backup
 	my ($self, $root_node, $backup_name) = @_;
 	my $backup_path = $root_node->backup_dir . '/' . $backup_name;
 	my $port        = $self->port;
-	my $root_port   = $root_node->port;
+	my $node_name   = $self->name;
+	my $root_name   = $root_node->name;
 
 	print
-"Initializing node $port from backup \"$backup_name\" of node $root_port\n";
-	die "Backup $backup_path does not exist" unless -d $backup_path;
+"# Initializing node \"$node_name\" from backup \"$backup_name\" of node \"$root_name\"\n";
+	die "Backup \"$backup_name\" does not exist at $backup_path"
+	  unless -d $backup_path;
 
 	mkdir $self->backup_dir;
 	mkdir $self->archive_dir;
@@ -249,7 +253,8 @@ sub start
 	my ($self) = @_;
 	my $port   = $self->port;
 	my $pgdata = $self->data_dir;
-	print("### Starting test server in $pgdata\n");
+	my $name   = $self->name;
+	print("### Starting node \"$name\"\n");
 	my $ret = TestLib::system_log('pg_ctl', '-w', '-D', $self->data_dir, '-l',
 		$self->logfile, 'start');
 
@@ -261,7 +266,6 @@ sub start
 	}
 
 	$self->_update_pid;
-
 }
 
 sub stop
@@ -269,8 +273,9 @@ sub stop
 	my ($self, $mode) = @_;
 	my $port   = $self->port;
 	my $pgdata = $self->data_dir;
+	my $name   = $self->name;
 	$mode = 'fast' if (!defined($mode));
-	print "### Stopping node in $pgdata with port $port using mode $mode\n";
+	print "### Stopping node \"$name\" using mode $mode\n";
 	TestLib::system_log('pg_ctl', '-D', $pgdata, '-m', $mode, 'stop');
 	$self->{_pid} = undef;
 	$self->_update_pid;
@@ -282,6 +287,8 @@ sub restart
 	my $port    = $self->port;
 	my $pgdata  = $self->data_dir;
 	my $logfile = $self->logfile;
+	my $name    = $self->name;
+	print "### Restarting node \"$name\"\n";
 	TestLib::system_log('pg_ctl', '-D', $pgdata, '-w', '-l', $logfile,
 		'restart');
 	$self->_update_pid;
@@ -290,6 +297,7 @@ sub restart
 sub _update_pid
 {
 	my $self = shift;
+	my $name = $self->name;
 
 	# If we can open the PID file, read its first line and that's the PID we
 	# want.  If the file cannot be opened, presumably the server is not
@@ -297,7 +305,7 @@ sub _update_pid
 	if (open my $pidfile, $self->data_dir . "/postmaster.pid")
 	{
 		chomp($self->{_pid} = <$pidfile>);
-		print "# Postmaster PID is $self->{_pid}\n";
+		print "# Postmaster PID for node \"$name\" is $self->{_pid}\n";
 		close $pidfile;
 		return;
 	}
@@ -316,6 +324,7 @@ sub _update_pid
 # for another node even when this one is not active.
 sub get_new_node
 {
+	my $name  = shift;
 	my $found = 0;
 	my $port  = $last_port_assigned;
 
@@ -340,7 +349,7 @@ sub get_new_node
 	print "# Found free port $port\n";
 
 	# Lock port number found by creating a new node
-	my $node = new PostgresNode($test_pghost, $port);
+	my $node = new PostgresNode($name, $test_pghost, $port);
 
 	# Add node to list of nodes
 	push(@all_nodes, $node);
@@ -354,8 +363,9 @@ sub get_new_node
 sub DESTROY
 {
 	my $self = shift;
+	my $name = $self->name;
 	return if not defined $self->{_pid};
-	print "# signalling QUIT to $self->{_pid}\n";
+	print "### Signalling QUIT to $self->{_pid} for node \"$name\"\n";
 	TestLib::system_log('pg_ctl', 'kill', 'QUIT', $self->{_pid});
 }
 
@@ -371,7 +381,8 @@ sub psql
 	my ($self, $dbname, $sql) = @_;
 
 	my ($stdout, $stderr);
-	print("# Running SQL command: $sql\n");
+	my $name = $self->name;
+	print("### Running SQL command on node \"$name\": $sql\n");
 
 	IPC::Run::run [ 'psql', '-XAtq', '-d', $self->connstr($dbname), '-f',
 		'-' ], '<', \$sql, '>', \$stdout, '2>', \$stderr
diff --git a/src/test/ssl/t/001_ssltests.pl b/src/test/ssl/t/001_ssltests.pl
index cd38e455973617e0e1f9b69a386589b5ade28782..80e8ea1fe79840327e5f538965f2989f3ddaa3d0 100644
--- a/src/test/ssl/t/001_ssltests.pl
+++ b/src/test/ssl/t/001_ssltests.pl
@@ -74,7 +74,7 @@ chmod 0600, "ssl/client.key";
 #### Part 0. Set up the server.
 
 diag "setting up data directory...";
-my $node = get_new_node();
+my $node = get_new_node('master');
 $node->init;
 
 # PGHOST is enforced here to set up the node, subsequent connections