/** * Construct new MailLogger */ public function __construct() { parent::__construct(); @(require_once 'Mail.php'); if (!class_exists('Mail')) { throw new BuildException('Need the PEAR Mail package to send logs'); } $from = Phing::getDefinedProperty('phing.log.mail.from'); $subject = Phing::getDefinedProperty('phing.log.mail.subject'); $tolist = Phing::getDefinedProperty('phing.log.mail.recipients'); if (!empty($from)) { $this->_from = $from; } if (!empty($subject)) { $this->_subject = $subject; } if (!empty($tolist)) { $this->_tolist = $tolist; } }
/** * Configure the logger. */ protected function configureLogging() { $type = Phing::getDefinedProperty('pear.log.type'); $name = Phing::getDefinedProperty('pear.log.name'); $ident = Phing::getDefinedProperty('pear.log.ident'); $conf = Phing::getDefinedProperty('pear.log.conf'); if ($type === null) { $type = 'file'; } if ($name === null) { $name = 'phing.log'; } if ($ident === null) { $ident = 'phing'; } if ($conf === null) { $conf = array(); } $this->logger = Log::singleton($type, $name, $ident, $conf, self::$levelMap[$this->msgOutputLevel]); }
/** * Configure the logger. */ protected function configureLogging() { $type = Phing::getDefinedProperty('pear.log.type'); $name = Phing::getDefinedProperty('pear.log.name'); $ident = Phing::getDefinedProperty('pear.log.ident'); $conf = Phing::getDefinedProperty('pear.log.conf'); if ($type === null) { $type = 'file'; } if ($name === null) { $name = 'phing.log'; } if ($ident === null) { $ident = 'phing'; } if ($conf === null) { $conf = array(); } include_once 'Log.php'; if (!class_exists('Log')) { throw new BuildException("Cannot find PEAR Log class for use by PearLogger."); } $this->logger = Log::singleton($type, $name, $ident, $conf, self::$levelMap[$this->msgOutputLevel]); }
/** * Sends the mail * * @see DefaultLogger#buildFinished * @param BuildEvent $event */ public function buildFinished(BuildEvent $event) { parent::buildFinished($event); $project = $event->getProject(); $properties = $project->getProperties(); $filename = $properties['phing.log.mail.properties.file']; // overlay specified properties file (if any), which overrides project // settings $fileProperties = new Properties(); $file = new PhingFile($filename); try { $fileProperties->load($file); } catch (IOException $ioe) { // ignore because properties file is not required } foreach ($fileProperties as $key => $value) { $properties['key'] = $project->replaceProperties($value); } $success = $event->getException() === null; $prefix = $success ? 'success' : 'failure'; try { $notify = StringHelper::booleanValue($this->getValue($properties, $prefix . '.notify', 'on')); if (!$notify) { return; } if (is_string(Phing::getDefinedProperty('phing.log.mail.subject'))) { $defaultSubject = Phing::getDefinedProperty('phing.log.mail.subject'); } else { $defaultSubject = $success ? 'Build Success' : 'Build Failure'; } $hdrs = array(); $hdrs['From'] = $this->getValue($properties, 'from', $this->from); $hdrs['Reply-To'] = $this->getValue($properties, 'replyto', ''); $hdrs['Cc'] = $this->getValue($properties, $prefix . '.cc', ''); $hdrs['Bcc'] = $this->getValue($properties, $prefix . '.bcc', ''); $hdrs['Body'] = $this->getValue($properties, $prefix . '.body', ''); $hdrs['Subject'] = $this->getValue($properties, $prefix . '.subject', $defaultSubject); $tolist = $this->getValue($properties, $prefix . '.to', $this->tolist); } catch (BadMethodCallException $e) { $project->log($e->getMessage(), Project::MSG_WARN); } if (empty($tolist)) { return; } $mail = Mail::factory('mail'); $mail->send($tolist, $hdrs, $this->mailMessage); }