logger = $logger; } /** * Logs a message using the ERROR log level. * * @param string $message The log message. This can be a sprintf format string. * @param ... mixed Optional sprintf params. * @api * * @deprecated Inject and call Psr\Log\LoggerInterface::error() instead. * @see \Psr\Log\LoggerInterface::error() */ public static function error($message /* ... */) { self::logMessage(Logger::ERROR, $message, array_slice(func_get_args(), 1)); } /** * Logs a message using the WARNING log level. * * @param string $message The log message. This can be a sprintf format string. * @param ... mixed Optional sprintf params. * @api * * @deprecated Inject and call Psr\Log\LoggerInterface::warning() instead. * @see \Psr\Log\LoggerInterface::warning() */ public static function warning($message /* ... */) { self::logMessage(Logger::WARNING, $message, array_slice(func_get_args(), 1)); } /** * Logs a message using the INFO log level. * * @param string $message The log message. This can be a sprintf format string. * @param ... mixed Optional sprintf params. * @api * * @deprecated Inject and call Psr\Log\LoggerInterface::info() instead. * @see \Psr\Log\LoggerInterface::info() */ public static function info($message /* ... */) { self::logMessage(Logger::INFO, $message, array_slice(func_get_args(), 1)); } /** * Logs a message using the DEBUG log level. * * @param string $message The log message. This can be a sprintf format string. * @param ... mixed Optional sprintf params. * @api * * @deprecated Inject and call Psr\Log\LoggerInterface::debug() instead. * @see \Psr\Log\LoggerInterface::debug() */ public static function debug($message /* ... */) { self::logMessage(Logger::DEBUG, $message, array_slice(func_get_args(), 1)); } /** * Logs a message using the VERBOSE log level. * * @param string $message The log message. This can be a sprintf format string. * @param ... mixed Optional sprintf params. * @api * * @deprecated Inject and call Psr\Log\LoggerInterface::debug() instead (the verbose level doesn't exist in the PSR standard). * @see \Psr\Log\LoggerInterface::debug() */ public static function verbose($message /* ... */) { self::logMessage(Logger::DEBUG, $message, array_slice(func_get_args(), 1)); } /** * @param int $logLevel * @deprecated Will be removed, log levels are now applied on each Monolog handler. */ public function setLogLevel($logLevel) { } /** * @deprecated Will be removed, log levels are now applied on each Monolog handler. */ public function getLogLevel() { } private function doLog($level, $message, $parameters = array()) { // To ensure the compatibility with PSR-3, the message must be a string if ($message instanceof \Exception) { $parameters['exception'] = $message; $message = $message->getMessage(); } if (is_object($message) || is_array($message) || is_resource($message)) { $this->logger->warning('Trying to log a message that is not a string', array( 'exception' => new \InvalidArgumentException('Trying to log a message that is not a string') )); return; } $this->logger->log($level, $message, $parameters); } private static function logMessage($level, $message, $parameters) { self::getInstance()->doLog($level, $message, $parameters); } public static function getMonologLevel($level) { switch ($level) { case self::ERROR: return Logger::ERROR; case self::WARN: return Logger::WARNING; case self::INFO: return Logger::INFO; case self::DEBUG: return Logger::DEBUG; case self::VERBOSE: return Logger::DEBUG; case self::NONE: default: // Highest level possible, need to do better in the future... return Logger::EMERGENCY; } } public static function getMonologLevelIfValid($level) { $level = strtoupper($level); if (!empty($level) && defined('Piwik\Log::'.strtoupper($level))) { return self::getMonologLevel(constant('Piwik\Log::'.strtoupper($level))); } return null; } }