A log target object will filter the messages logged by Logger according
to its [[levels]] and [[categories]] properties. It may also export the filtered
messages to specific destination defined by the target, such as emails, files.
Level filter and category filter are combinatorial, i.e., only messages
satisfying both filter conditions will be handled. Additionally, you
may specify [[except]] to exclude messages of certain categories.
/** * @inheritdoc */ public function init() { parent::init(); $this->stderrIsNotStdout = fstat(\STDERR)['dev'] != fstat(\STDOUT)['dev']; $this->stderrSupportsColors = Console::streamSupportsAnsiColors(\STDERR); $this->stdoutSupportsColors = Console::streamSupportsAnsiColors(\STDOUT); }
/** * {@inheritdoc} */ public function export() { foreach ($this->messages as $message) { list($context, $level, $category, $timestamp, $traces) = $message; $extra = []; if ($context instanceof \Throwable || $context instanceof \Exception) { $this->client->captureException($context); $description = $context->getMessage(); } elseif (isset($context['msg'])) { $description = $context['msg']; $extra = $context; unset($extra['msg']); } else { $description = $context; } if ($this->context) { $extra['context'] = parent::getContextMessage(); } if (is_callable($this->extraCallback)) { $extra = call_user_func($this->extraCallback, $context, $extra); } $data = ['level' => static::getLevelName($level), 'timestamp' => $timestamp, 'message' => $description, 'extra' => $extra, 'tags' => ['category' => $category]]; $this->client->capture($data, $traces); } }
/** * @inheritdoc */ public function init() { parent::init(); if ($this->options === null) { $this->options = LOG_ODELAY | LOG_PID; } }
/** * @inheritdoc */ public function init() { parent::init(); if (empty($this->message['to'])) { throw new InvalidConfigException('The "to" option must be set for EmailTarget::message.'); } $this->mailer = Instance::ensure($this->mailer, 'yii\\mail\\MailerInterface'); }
/** * @inheritdoc */ public function init() { parent::init(); //assert proper config of formatLineCallback if ($this->formatLineCallback !== null && !$this->formatLineCallback instanceof \Closure) { $msg = Yii::t('app', 'formatLineCallback needs to be a closure'); throw new InvalidConfigException($msg); } }
/** * @inheritdoc */ public function init() { parent::init(); // Make sure log token is given if (empty($this->logToken)) { $className = get_class($this); throw new InvalidCallException("{$className} requires \"\$logToken\" attribute to be set."); } }
/** * Check required properties */ public function init() { parent::init(); foreach (['botToken', 'chatId'] as $property) { if ($this->{$property} === null) { throw new InvalidConfigException(self::className() . "::\${$property} property must be set"); } } }
/** * Initializes the DbTarget component. * This method will initialize the [[db]] property to make sure it refers to a valid DB connection. * @throws InvalidConfigException if [[db]] is invalid. */ public function init() { parent::init(); if (is_string($this->db)) { $this->db = Yii::$app->getComponent($this->db); } if (!$this->db instanceof Connection) { throw new InvalidConfigException("DbTarget::db must be either a DB connection instance or the application component ID of a DB connection."); } }
public function init() { $this->_stdoutIsTerminal = posix_isatty(\STDOUT); if ($this->_stdoutIsTerminal) { $this->logVars = []; } $this->_stdoutSupportsAnsiColors = Console::streamSupportsAnsiColors(\STDOUT); $this->_stderrIsTerminal = posix_isatty(\STDERR); $this->_stderrSupportsAnsiColors = Console::streamSupportsAnsiColors(\STDERR); $this->_levelAnsiColorMap = [Logger::LEVEL_ERROR => $this->errorAnsiColor, Logger::LEVEL_WARNING => $this->warningAnsiColor, Logger::LEVEL_INFO => $this->infoAnsiColor, Logger::LEVEL_TRACE => $this->traceAnsiColor, Logger::LEVEL_PROFILE => $this->profileAnsiColor, Logger::LEVEL_PROFILE_BEGIN => $this->profileBeginAnsiColor, Logger::LEVEL_PROFILE_END => $this->profileEndAnsiColor]; parent::init(); }
/** * @inheritdoc */ public function init() { parent::init(); if (empty($this->message['to'])) { throw new InvalidConfigException('The "to" option must be set for EmailTarget::message.'); } if (is_string($this->mail)) { $this->mail = Yii::$app->getComponent($this->mail); } if (!$this->mail instanceof MailerInterface) { throw new InvalidConfigException("EmailTarget::mailer must be either a mailer object or the application component ID of a mailer object."); } }
/** * Initializes the route. * This method is invoked after the route is created by the route manager. */ public function init() { parent::init(); if (!$this->webhookUrl) { $this->enabled = false; } if (!$this->username) { $this->username = Yii::$app->name; } // Not pushing Slackbot requests to slack. if (isset(Yii::$app->request->userAgent) && preg_match('/^Slackbot-/', Yii::$app->request->userAgent)) { $this->enabled = false; } }
/** * Filter all exceptions. They're logged via ErrorHandler * @inheritdoc */ public static function filterMessages($messages, $levels = 0, $categories = [], $except = []) { $messages = parent::filterMessages($messages, $levels, $categories, $except); foreach ($messages as $i => $message) { $type = explode(':', $message[2]); // shutdown function not working in yii2 yet: https://github.com/yiisoft/yii2/issues/6637 // allow fatal errors exceptions in log messages if (is_array($type) && sizeof($type) == 2 && $type[0] == 'yii\\base\\ErrorException' && ErrorException::isFatalError(['type' => $type[1]])) { continue; } if (is_string($message[0]) && strpos($message[0], 'exception \'') === 0) { unset($messages[$i]); } } return $messages; }
/** * Initializes the route. * This method is invoked after the route is created by the route manager. */ public function init() { parent::init(); if ($this->logFile === null) { $this->logFile = Yii::$app->getRuntimePath() . '/logs/app.log'; } else { $this->logFile = Yii::getAlias($this->logFile); } $logPath = dirname($this->logFile); if (!is_dir($logPath)) { FileHelper::createDirectory($logPath, $this->dirMode, true); } if ($this->maxLogFiles < 1) { $this->maxLogFiles = 1; } if ($this->maxFileSize < 1) { $this->maxFileSize = 1; } }
/** * @inheritdoc */ public function init() { parent::init(); $this->_logger = FluentLogger::open($this->host, $this->port, $this->options); }
/** * @inheritdoc * @return string */ protected function getContextMessage() { return $this->enableContextMassage ? parent::getContextMessage() : ''; }
/** * Ability to hide context message. See parent implementation for more details. * @return string */ protected function getContextMessage() { return $this->includeContextMessage ? parent::getContextMessage() : ''; }
/** * @param \yii\debug\Module $module * @param array $config */ public function __construct($module, $config = []) { parent::__construct($config); $this->module = $module; $this->tag = uniqid(); }
/** * @inheritdoc */ public function init() { parent::init(); $this->setLevels(Logger::LEVEL_PROFILE); $this->exportInterval = 1; }
/** * @inheritDoc */ public function init() { parent::init(); $this->httpClient = Instance::ensure($this->httpClient, Client::className()); }
/** * Initializes the route. * This method is invoked after the route is created by the route manager. */ public function init() { $this->_fp = \FirePHP::getInstance(true); parent::init(); }
<?php use yii\log\Target; use yii\log\Logger; ?> <?php $title = 'Logged ' . count($data['messages']) . ' messages'; $errorCount = count(Target::filterMessages($data['messages'], Logger::LEVEL_ERROR)); $warningCount = count(Target::filterMessages($data['messages'], Logger::LEVEL_WARNING)); $output = []; if ($errorCount) { $output[] = "<span class=\"label label-important\">{$errorCount}</span>"; $title .= ", {$errorCount} errors"; } if ($warningCount) { $output[] = "<span class=\"label label-warning\">{$warningCount}</span>"; $title .= ", {$warningCount} warnings"; } ?> <div class="yii-debug-toolbar-block"> <a href="<?php echo $panel->getUrl(); ?> " title="<?php echo $title; ?> ">Log <span class="label"><?php echo count($data['messages']);
/** * Initializes the DbTarget component. * This method will initialize the [[db]] property to make sure it refers to a valid DB connection. * @throws InvalidConfigException if [[db]] is invalid. */ public function init() { parent::init(); $this->db = Instance::ensure($this->db, Connection::className()); }
/** * Initializes the route. * This method is invoked after the route is created by the route manager. */ public function init() { parent::init(); }
/** * {@inheritdoc} */ public function init() { parent::init(); $this->robot = Yii::createObject(['class' => Pubu::class, 'remote' => $this->channel]); }
/** * Initializes the DbTarget component. * This method will initialize the [[db]] property to make sure it refers to a valid DB connection. * @throws InvalidConfigException if [[db]] is invalid. */ public function init() { parent::init(); $this->client = new \Raven_Client($this->dsn); }
public function init() { $this->requestId = uniqid(gethostname(), true); parent::init(); }