1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2024-12-14 10:13:05 +02:00

Improved parameter/result logging in debug/trace functions.

This commit is contained in:
David Steele 2016-12-10 09:15:20 -05:00
parent e61ef6ebce
commit 1a5fa920e6
3 changed files with 62 additions and 77 deletions

View File

@ -201,6 +201,10 @@
<p>Code cleanup in preparation for improved <cmd>stanza-create</cmd> command.</p> <p>Code cleanup in preparation for improved <cmd>stanza-create</cmd> command.</p>
</release-item> </release-item>
<release-item>
<p>Improved parameter/result logging in debug/trace functions.</p>
</release-item>
</release-refactor-list> </release-refactor-list>
</release-core-list> </release-core-list>

View File

@ -353,6 +353,59 @@ sub logDebugProcess
return @oyResult; return @oyResult;
} }
####################################################################################################################################
# logDebugBuild
####################################################################################################################################
sub logDebugBuild
{
my $strValue = shift;
my $rResult;
# Value is undefined
if (!defined($strValue))
{
$rResult = \'[undef]';
}
# Value is not a ref, but return it as a ref for efficiency
elsif (!ref($strValue))
{
$rResult = \$strValue;
}
# Value is a hash
elsif (ref($strValue) eq 'HASH')
{
my $strValueHash;
for my $strSubValue (sort(keys(%{$strValue})))
{
$strValueHash .=
(defined($strValueHash) ? ', ' : '{') . "${strSubValue} => " . ${logDebugBuild($strValue->{$strSubValue})};
}
$rResult = \(defined($strValueHash) ? $strValueHash . '}' : '{}');
}
# Value is an array
elsif (ref($strValue) eq 'ARRAY')
{
my $strValueArray;
for my $strSubValue (@{$strValue})
{
$strValueArray .= (defined($strValueArray) ? ', ' : '(') . ${logDebugBuild($strSubValue)};
}
$rResult = \(defined($strValueArray) ? $strValueArray . ')' : '()');
}
# Else some other type ??? For the moment this is forced to object to not make big log changes
else
{
$rResult = \('[object]');
}
return $rResult;
}
#################################################################################################################################### ####################################################################################################################################
# logDebugOut # logDebugOut
#################################################################################################################################### ####################################################################################################################################
@ -383,74 +436,9 @@ sub logDebugOut
$strParamSet .= ', '; $strParamSet .= ', ';
} }
my $strValueRef; my $strValueRef = defined($oParamHash->{$strParam}{value}) ? logDebugBuild($oParamHash->{$strParam}{value}) : undef;
my $bDefault = false; my $bDefault =
defined($$strValueRef) && defined($$oParamHash{$strParam}{default}) ? $$oParamHash{$strParam}{default} : false;
if (ref($$oParamHash{$strParam}) eq 'HASH')
{
if (blessed($$oParamHash{$strParam}{value}))
{
$strValueRef = \'[object]';
}
else
{
if (ref($$oParamHash{$strParam}{value}) eq 'ARRAY')
{
my $strValueArray;
for my $strValue (@{$$oParamHash{$strParam}{value}})
{
if (ref($strValue) eq 'ARRAY')
{
my $strSubValueArray;
for my $strSubValue (@{$strValue})
{
$strSubValueArray .=
(defined($strSubValueArray) ? ', ' : '(') .
(defined($strSubValue) ? $strSubValue : '[undef]');
}
$strValueArray .= (defined($strValueArray) ? ', ' : '(') .
(defined($strSubValueArray) ? $strSubValueArray . ')' : '()');
}
else
{
$strValueArray .=
(defined($strValueArray) ? ', ' : '(') . (defined($strValue) ? $strValue : '[undef]');
}
}
$strValueRef = \(defined($strValueArray) ? $strValueArray . ')' : '()');
}
else
{
$strValueRef = ref($$oParamHash{$strParam}{value}) ? $$oParamHash{$strParam}{value} :
\$$oParamHash{$strParam}{value};
$bDefault = defined($$strValueRef) &&
defined($$oParamHash{$strParam}{default}) ? $$oParamHash{$strParam}{default} : false;
}
}
}
# If this is an ARRAY ref then create a comma-separated list
elsif (ref($$oParamHash{$strParam}) eq 'ARRAY')
{
my $strValueArray;
for my $strValue (@{$$oParamHash{$strParam}{value}})
{
$strValueArray .=
(defined($strValueArray) ? ', ' : '(') . (defined($strValue) ? $strValue : '[undef]');
}
$strValueRef = \(defined($strValueArray) ? $strValueArray . ')' : '()');
}
# Else get a reference if a reference was not passed
else
{
$strValueRef = ref($$oParamHash{$strParam}) ? $$oParamHash{$strParam} : \$$oParamHash{$strParam};
}
$strParamSet .= "${strParam} = " . $strParamSet .= "${strParam} = " .
($bDefault ? '<' : '') . ($bDefault ? '<' : '') .

View File

@ -63,18 +63,11 @@ push @EXPORT, qw(commonPrefix);
#################################################################################################################################### ####################################################################################################################################
# boolFormat # boolFormat
# #
# Outut boolean as true or false. # Output boolean as true or false.
#################################################################################################################################### ####################################################################################################################################
sub boolFormat sub boolFormat
{ {
my $bValue; return shift() ? 'true' : 'false';
if ($bValue)
{
return 'true';
}
return 'false';
} }
push @EXPORT, qw(boolFormat); push @EXPORT, qw(boolFormat);