3. PSR-3 --- 日志接口

来源:互联网 发布:dive into python pdf 编辑:程序博客网 时间:2024/06/01 12:45

日志接口
这里写图片描述


1. 规范
这里写图片描述
这里写图片描述

<?phpnamespace Psr\Log;/** * Describes a logger instance * * The message MUST be a string or object implementing __toString(). * * The message MAY contain placeholders in the form: {foo} where foo * will be replaced by the context data in key "foo". * * The context array can contain arbitrary data, the only assumption that * can be made by implementors is that if an Exception instance is given * to produce a stack trace, it MUST be in a key named "exception". * * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md * for the full interface specification. */interface LoggerInterface{    /**     * System is unusable.     *     * @param string $message     * @param array $context     * @return null     */    public function emergency($message, array $context = array());    /**     * Action must be taken immediately.     *     * Example: Entire website down, database unavailable, etc. This should     * trigger the SMS alerts and wake you up.     *     * @param string $message     * @param array $context     * @return null     */    public function alert($message, array $context = array());    /**     * Critical conditions.     *     * Example: Application component unavailable, unexpected exception.     *     * @param string $message     * @param array $context     * @return null     */    public function critical($message, array $context = array());    /**     * Runtime errors that do not require immediate action but should typically     * be logged and monitored.     *     * @param string $message     * @param array $context     * @return null     */    public function error($message, array $context = array());    /**     * Exceptional occurrences that are not errors.     *     * Example: Use of deprecated APIs, poor use of an API, undesirable things     * that are not necessarily wrong.     *     * @param string $message     * @param array $context     * @return null     */    public function warning($message, array $context = array());    /**     * Normal but significant events.     *     * @param string $message     * @param array $context     * @return null     */    public function notice($message, array $context = array());    /**     * Interesting events.     *     * Example: User logs in, SQL logs.     *     * @param string $message     * @param array $context     * @return null     */    public function info($message, array $context = array());    /**     * Detailed debug information.     *     * @param string $message     * @param array $context     * @return null     */    public function debug($message, array $context = array());    /**     * Logs with an arbitrary level.     *     * @param mixed $level     * @param string $message     * @param array $context     * @return null     */    public function log($level, $message, array $context = array());}

这里写图片描述

 <?php  /**   * Interpolates context values into the message placeholders.   */  function interpolate($message, array $context = array())  {      // build a replacement array with braces around the context keys      $replace = array();      foreach ($context as $key => $val) {          $replace['{' . $key . '}'] = $val;      }      // interpolate replacement values into the message and return      return strtr($message, $replace);  }  // a message with brace-delimited placeholder names  $message = "User {username} created";  // a context array of placeholder names => replacement values  $context = array('username' => 'bolivar');  // echoes "Username bolivar created"  echo interpolate($message, $context);

这里写图片描述

这里写图片描述
这里写图片描述

<?phpnamespace Psr\Log;/** * This is a simple Logger implementation that other Loggers can inherit from. * * It simply delegates all log-level-specific methods to the `log` method to * reduce boilerplate code that a simple Logger that does the same thing with * messages regardless of the error level has to implement. */abstract class AbstractLogger implements LoggerInterface{    /**     * System is unusable.     *     * @param string $message     * @param array $context     * @return null     */    public function emergency($message, array $context = array())    {        $this->log(LogLevel::EMERGENCY, $message, $context);    }    /**     * Action must be taken immediately.     *     * Example: Entire website down, database unavailable, etc. This should     * trigger the SMS alerts and wake you up.     *     * @param string $message     * @param array $context     * @return null     */    public function alert($message, array $context = array())    {        $this->log(LogLevel::ALERT, $message, $context);    }    /**     * Critical conditions.     *     * Example: Application component unavailable, unexpected exception.     *     * @param string $message     * @param array $context     * @return null     */    public function critical($message, array $context = array())    {        $this->log(LogLevel::CRITICAL, $message, $context);    }    /**     * Runtime errors that do not require immediate action but should typically     * be logged and monitored.     *     * @param string $message     * @param array $context     * @return null     */    public function error($message, array $context = array())    {        $this->log(LogLevel::ERROR, $message, $context);    }    /**     * Exceptional occurrences that are not errors.     *     * Example: Use of deprecated APIs, poor use of an API, undesirable things     * that are not necessarily wrong.     *     * @param string $message     * @param array $context     * @return null     */    public function warning($message, array $context = array())    {        $this->log(LogLevel::WARNING, $message, $context);    }    /**     * Normal but significant events.     *     * @param string $message     * @param array $context     * @return null     */    public function notice($message, array $context = array())    {        $this->log(LogLevel::NOTICE, $message, $context);    }    /**     * Interesting events.     *     * Example: User logs in, SQL logs.     *     * @param string $message     * @param array $context     * @return null     */    public function info($message, array $context = array())    {        $this->log(LogLevel::INFO, $message, $context);    }    /**     * Detailed debug information.     *     * @param string $message     * @param array $context     * @return null     */    public function debug($message, array $context = array())    {        $this->log(LogLevel::DEBUG, $message, $context);    }}

这里写图片描述

https://github.com/hfcorriez/fig-standards/blob/zh_CN/%E6%8E%A5%E5%8F%97/PSR-3-logger-interface.md

0 0