log.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 551 行 · 第 1/2 页

SVN-BASE
551
字号
    /**     * Sets the default logger.  If no logName is specified, then "LOG" is used.  For any     * named logger other than "LOG", the logger must have been registered with registerLogger().     *     * @param  string        $logName        Name of this instance, used to access it from other static functions.     * @return boolean       True     */    public static function setDefaultLogger($logName = null)    {        if (is_null($logName) || $logName == 'LOG') {            $logName = 'LOG';        } else if (!self::hasLogger($logName)) {            throw new Zend_Log_Exception("Cannot set default, no instance of log named \"$logName\".");        }        self::$_defaultLogName = $logName;        return true;    }    /**     * Sets the values for log fields. Omitted fields are set to default values.     *     * @param  array $fields     * @param  string $logName     * @return boolean True     */    public static function setFields($fields, $logName = null)    {        if (is_null($logName)) {            $logName = self::$_defaultLogName;        }        if (!array_key_exists('message', $fields)) {            $fields['message'] = '';        }        if (!array_key_exists('level', $fields)) {            $fields['level'] = '';        }        self::_getInstance($logName)->_fields = $fields;        return true;    }    /**     * Returns an array of the log fields.     *     * @param  string $logName     * @return array     */    public static function getFields($logName = null)    {        if (is_null($logName)) {            $logName = self::$_defaultLogName;        }        return self::_getInstance($logName)->_fields;    }    /**     * Sends a message to the log.     *     * @param string $message     * @param integer $level     * @param mixed $logName_or_fields     * @param string $logName     * @throws Zend_Log_Exception     * @return boolean True     */    public static function log($message, $level = self::LEVEL_DEBUG, $logName_or_fields = null, $logName = null)    {        // Check to see that the specified log level is actually a level        // and not the LEVEL_ALL mask or an invalid level.        if (!self::isLogLevel($level)) {            throw new Zend_Log_Exception('Unknown log level specified.');        }        if (is_string($logName_or_fields)) {            $logName = $logName_or_fields;        } else {            if (!is_null($logName_or_fields)) {                // Fields must be specified as key=>value pairs.                if (!is_array($logName_or_fields)) {                    throw new Zend_Log_Exception('Optional fields must be supplied as an associative array of key/value pairs.');                }                /**                 * If the first key in the $logName_or_fields array is numeric, we'll assume that this is an array                 * that was generated by array() and as such it's an array of lognames.  Otherwise, assume fields.                 */                reset($logName_or_fields);                if (is_numeric(key($logName_or_fields))) {                    $logName = $logName_or_fields;                    $fields = null;                } else {                    // Fields passed must be in the array with keys matching the keys that were set by setFields().                    $fields = array();                    foreach ($logName_or_fields as $fieldName => $fieldValue) {                        $fields[$fieldName] = $fieldValue;                    }                }            }        }        /**         * A log may be specified or the default log will be selected.  A special logname, ZF, exists         * only for internal logging of the framework.         */        if (is_null($logName)) {            $logName = self::$_defaultLogName;        } else {            if ($logName == 'ZF' && !isset(self::$_instances['ZF'])) {                self::registerLogger(new Zend_Log_Adapter_Null(), 'ZF');            }        }        /**         * For any fields that were not specified, use the defaults.         */        $fields['message'] = $message;        $fields['level'] = self::$_levelNames[$level];        foreach (self::getFields($logName) as $fieldName => $fieldValue) {            if (!array_key_exists($fieldName, $fields)) {                $fields[$fieldName] = $fieldValue;            }        }        /**         * If the supplied logName is actually an array of logNames, then         * call the function recursively to post to all the logs.         */        if (is_array($logName)) {            foreach ($logName as $l) {                self::log($message, $level, $fields, $l);            }            return true;        }        // Write the message to the log if the current log level will accept it.        /* @var $logger Zend_Log */        $logger = self::_getInstance($logName);        if ($level & $logger->_levelMask) {            $fields['message'] = $logger->_messagePrefix . $message . $logger->_messageSuffix;            $logger->_adapter->write($fields);        }        return true;    }    /**     * Destroy all Zend_Log instances in Zend_Log::$_instances.  This is equivalent to calling unregister()     * for each log instance.     *     * @return boolean True     */    public static function close()    {        // This will cause the destruction of the instances.  The destructor        // in the Zend_Log_Adapter_File class will clean up on its way out.        self::$_instances = null;        return true;    }    /**     * Sets a message prefix.  The prefix will be automatically prepended to any message that is     * sent to the specified log.     *     * @param  string         $prefix         The prefix string     * @param  string         $logName        Name of this instance     * @return boolean        True     */    public static function setMessagePrefix($prefix, $logName = null)    {        self::_getInstance($logName)->_messagePrefix = $prefix;        return true;    }    /**     * Sets a message suffix.  The suffix will be automatically appended to any message that is     * sent to the specified log.     *     * @param  string         $suffix         The suffix string     * @param  string         $logName        Name of this instance     * @return boolean        True     */    public static function setMessageSuffix($suffix, $logName = null)    {        self::_getInstance($logName)->_messageSuffix = $suffix;        return true;    }    /**     * Sets the logging level of the log instance to one of the Zend_Log::LEVEL_* constants.  Only     * messages with this log level will be logged by the instance, all others will be ignored.     *     * @param  integer            $level     * @param  string             $logName        Name of this instance     * @throws Zend_Log_Exception     * @return boolean            True     */    public static function setLevel($level, $logName = null)    {        if (!self::isLogLevel($level)) {            throw new Zend_Log_Exception('Unknown log level specified.');        }        self::_getInstance($logName)->_levelMask = $level;        return true;    }    /**     * Sets the logging level of the log instance based on a mask.  The mask is the bitwise OR     * of any of the Zend_Log::LEVEL_* constants.     *     * @param  integer            $mask           The log level mask     * @param  string             $logName        Name of this instance     * @throws Zend_Log_Exception     * @return boolean            True     */    public static function setMask($mask, $logName = null)    {        if (!is_int($mask) || $mask < 0 || $mask > 255) {            throw new Zend_Log_Exception('Level mask out of range (should be integer between 0 and 255).');        }        $logger = self::_getInstance($logName);        $logger->_levelMask = $mask;        return true;    }    /**     * Sets and adapter-specific option.     *     * @param string    $optionKey      The option name     * @param string    $optionValue    The option value     * @param string    $logName        Name of this instance     */    public static function setAdapterOption($optionKey, $optionValue, $logName = null)    {        $logger = self::_getInstance($logName);        return $logger->_adapter->setOption($optionKey, $optionValue);    }    /**     * Tests if the supplied $level is one of the valid log levels (Zend_Log::LEVEL_* constants).     *     * @param  int     $level       Value to test     * @return boolean              Is it a valid level?     */    public static function isLogLevel($level)    {        return in_array($level, array(self::LEVEL_SEVERE, self::LEVEL_ERROR, self::LEVEL_WARNING,                        self::LEVEL_INFO, self::LEVEL_DEBUG));    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?