/** * @return MAIL_PROVIDER */ public function make_mail_provider() { $class_name = $this->final_class_name('MAIL_PROVIDER', 'webcore/mail/mail_provider.php'); /** @var $Result MAIL_PROVIDER */ $Result = new $class_name($this); $opts = $this->mail_options; if ($opts->logging_enabled) { $class_name = $this->final_class_name('FILE_LOGGER', 'webcore/log/file_logger.php'); /** @var $logger FILE_LOGGER */ $logger = new $class_name(); $logger->set_file_name($this->env->resolve_file($opts->log_file_name)); if ($this->env->debugging) { $logger->set_enabled(Msg_type_all); } else { $logger->set_enabled(Msg_type_all - Msg_type_all_debug); $logger->set_channel_enabled(Msg_channel_publisher, Msg_type_all - Msg_type_all_debug); $logger->set_channel_enabled(Msg_channel_mail, Msg_type_all - Msg_type_all_debug); } $Result->logs->set_logger($logger); } return $Result; }
/** * Send the error to the logger. * @param EXCEPTION_SIGNATURE $sig * @param string $msg * @access private */ public function dispatch($sig, $msg) { if ($this->env->is_http_server() && $this->env->buffered() && $this->env->exception_handler_page) { $current_url = $this->env->url(); $handler_url = $this->env->resolve_file($this->env->exception_handler_page); if (strpos($current_url, $handler_url) === false) { $parameters = $sig->as_query_string(); $this->env->redirect_root($handler_url . '?' . $parameters); } else { parent::dispatch($sig, $msg); } } else { parent::dispatch($sig, $msg); } }
/** * Return a logger that records messages to a plain text file. * Override the "FILE_LOGGER" extension point to control which type of object * is created. * @see _make_echo_logger() * @see _make_console_logger() * @param ENVIRONMENT $env * @param string $file_name Path to the log file; resolved relative to the * environment. Use the {@link Folder_name_logs} alias to store in the default * logs folder. * @param boolean $is_html False uses plain text formatting. * @return FILE_LOGGER * @access private */ protected function _make_text_file_logger($env, $file_name, $is_html = false) { $class_name = $this->final_class_name('FILE_LOGGER', 'webcore/log/file_logger.php'); $Result = new $class_name($env); /* Resolve the log file to use relative to the environment. */ $Result->set_file_name($env->resolve_file($file_name)); /* Display message type only if the log is plain text (HTML * uses a CSS class). */ $Result->set_is_html($is_html); $Result->show_type = !$is_html; return $Result; }