NAME
Log::Shiras::LogSpace - Log::Shiras Role for runtime name-spaces
SYNOPSIS
use Modern::Perl;
use MooseX::ShortCut::BuildInstance qw( build_class );
use Log::Shiras::LogSpace;
my $test_instance = build_class(
package => 'Generic',
roles =>[ 'Log::Shiras::LogSpace' ],
add_methods =>{
get_class_space => sub{ 'ExchangeStudent' },
i_am => sub{
my( $self )= @_;
print "I identify as a: " . $self->get_all_space( 'individual' ) . "\n";
}
},
);
my $Generic = $test_instance->new;
my $French = $test_instance->new( log_space => 'French' );
my $Spanish = $test_instance->new( log_space => 'Spanish' );
$Generic->i_am;
$French->i_am;
$Spanish->i_am;
#######################################################################################
# Synopsis Screen Output
# 01: I identify as a: Generic::ExchangeStudent::individual
# 02: I identify as a: French::ExchangeStudent::individual
# 03: I identify as a: Spanish::ExchangeStudent::individual
#######################################################################################
DESCRIPTION
This attribute is useful to manage runtime Log::Shiras caller namespace. In the case where MyCoolPackage with Log::Shiras lines is used in more than one context then it is possible to pass a context sensitive name to the attribute log_space on intantiation of the instance and have the namespace bounds only activate the desired context of the package rather than have it report everywhere it is used. The telephone call in this case would look something like this;
package MyCoolPackage
sub get_class_space{ 'MyCoolPackage' }
sub my_cool_sub{
my( $self, $message ) = @_;
my $phone = Log::Shiras::Telephone->new(
name_space => $self->get_all_space . '::my_cool_sub',
);
$phone->talk( level => 'debug',
message => "Arrived at my_cool_sub with the message: $message" );
# Do something cool here!
}
In this case if you used my cool package instances with the log_space set to different values then only the namespace unblocked for 'FirstInstance::MyCoolPackage::my_cool_sub' would report. See the documentation for get_all_space for details.
As a general rule it works best if the subroutine 'get_class_space' is defined in an object class file (not a role file). Each subroutine space can be identified with the $add_string passed to get_all_space.
Attributes
Data passed to new when creating an instance of the consuming class. For modification of this attribute see the listed attribute methods.
log_space
Definition: This will be the base log_space element returned by get_all_space
Default the consuming package name
Range Any string, but Log::Shiras will look for '::' separators
attribute methods
get_log_space
Definition: Returns the attribute value
set_log_space( $string )
Definition: sets the attribute value
has_log_space
Definition: predicate test for the attribute
Method
get_all_space( $add_string )
Definition: This method collects the stored 'log_space' attribute value and then joins it with the results of a method call to 'get_class_space'. The 'get_class_space' attribute should be provided somewhere else in the class. The two values are joined with '::'. It will additionally join another string argument passed as $add_string to form a complete log space stack. See synopsis.
Accepts $add_string
Returns log_space . '::' . $self->get_class_space . '::' . $add_string as each element is available.
SUPPORT
TODO
1. Nothing Yet
AUTHOR
COPYRIGHT
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.