EAI-Wrap
view release on metacpan or search on metacpan
lib/EAI/Common.pm view on Meta::CPAN
eval {$msg->send('smtp', $config{smtpServer})} or $logger->error("\$msg->send failed: $@".longmess());
if ($msg->last_send_successful()) {
$logger->info("Mail sent");
$logger->trace("sent message: ".$msg->as_string) if $logger->is_trace();
}
}
package Log::Dispatch::Email::LogSender;
use feature 'unicode_strings';
use Log::Dispatch::Email;
use base qw( Log::Dispatch::Email );
sub send_email {
my ($self, %p) = @_;
# catch wide non utf8 characters to avoid die in MIME::Lite
#eval {decode('UTF-8',$p{message},$Encode::FB_confess )} or $p{message} =~ s/[^\x00-\x7f]/?/g;
my $msg = MIME::Lite->new(
From => $self->{from},
To => ( join ',', @{ $self->{to} } ),
Subject => $self->{subject},
Type => "TEXT",
Data => $p{message},
);
eval {$msg->send();} or warn("couldn't send error mail: $@");
}
1;
__END__
=head1 NAME
EAI::Common - Common parts for the EAI::Wrap package
=head1 SYNOPSIS
%config .. hash for global config (set in $EAI_WRAP_CONFIG_PATH/site.config, amended with $EAI_WRAP_CONFIG_PATH/additional/*.config)
%common .. common load configs for the task script
@loads .. list of hashes defining specific load processes
%execute .. hash of parameters for current running task script
readConfigFile ($configfilename)
getKeyInfo ($prefix, $key, $area)
setupConfigMerge ()
getOptions ()
extractConfigs ($contextSub, $arg, @required)
checkHash ($hash, $hashName)
checkParam ($subhash, $hashName)
setupEAIWrap ()
dumpFlat ($arg, $sortDump, $compressDump)
getLogFPathForMail ()
getLogFPath ()
MailFilter ()
setErrSubject ($context)
setupLogging ()
checkStartingCond ($task)
sendGeneralMail ($From, $To, $Cc, $Bcc, $Subject, $Type, $Data, $Encoding, $AttachType, $AttachFile)
=head1 DESCRIPTION
EAI::Common contains common used functions for L<EAI::Wrap>. This is for reading config files, setting up the config hierarchy, including commandline options, setting up logging, including callbacks for the log.config, setting the error subject for e...
=head2 API
=over
=item readConfigFile ($)
read given config file (eval perl code in site.config and related files)
=item getSensInfo ($$)
arguments are $prefix and $key
get sensitive info from $config{getSensInfo}{$prefix}{$key}, if queried key is a ref to hash, get the key value using the environment lookup hash ($config{sensitive}{$prefix}{$key}{$execute{env}}).
=item setupConfigMerge
setupConfigMerge creates cascading inheritance of config/DB/File/FTP/process/task settings (lower means more precedence (overriding previously set parameters)):
%config <-- config options from command line
- is merged into -->
%common (common task parameters defined in script) <-- DB, FTP, File, task and process options from command line
- is merged into -->
$loads[] <-- DB, FTP, File and process options from command line
=item getOptions
get options for overriding configured settings, results are stored in globally available hash %opt and list @optloads
=item extractConfigs ($$$;@)
arguments are $contextSub, $arg and @required.
sets error subject to $contextSub (first argument) and extracts config hashes (DB,FTP,File,process,task) from ref to hash $arg (second argument) and return them as a list of hashes. The config hashes to be extracted are given as strings in the parame...
=item checkHash ($$)
arguments are $hash and $hashName
check keys of config subhash (named $hashName) being passed in $hash for validity against internal hash %hashCheck (valid key entries + their valid value types (examples) are defined there). returns 0 on error and exception $@ contains details, to al...
=item checkParam ($$)
arguments are $subhash and $hashName
check existence of parameter $hashName within first argument $subhash, returns 0 if not defined or empty (only non-numerics)
=item setupEAIWrap
Usually this is the first call after the configuration (assignments to %common and @loads) was defined.
This sets up the configuration datastructure and merges the hierarchy of configurations.
Correctness of the configuration and all conditions preventing the task script's actual starting are also checked; finally all used parameters are written into the initial log line, which is used by the logchecker (see L<checkLogExist.pl>).
following three functions can be used in the central log.config as coderefs for callback.
=item dumpFlat ($;$$)
arguments are $arg: datastructure to be flat dumped, $sortDump: sort all keys in $arg and $compressDump: compress information in $arg
returns Data::Dumper dumped datastructure given in $arg flattened, sorted (if $sortDump given) and compressed (if $compressDump given)
( run in 1.719 second using v1.01-cache-2.11-cpan-98e64b0badf )