日志类

<?php
/**
 * 记录日志
 *
 * @package    library
 */
defined('DYMall') or exit('Access Invalid!');
define('BASE_DATA_PATH', '/data');

class Log
{
    const SQL = 'SQL';
    const ERR = 'ERR';
    const INFO = 'INFO';
    const RUN = 'RUN';
    private static $log = array();
    private static $logFile = "%s%s.log";

    //sql日志文件
    private static $sqlFile = 'sql_';

    /**
     * Notes:记录
     * User: Abel Yang
     * Date: 2020/5/30/030
     * Time: 15:40
     * @param $message
     * @param string $level
     */
    public static function record($message, $level = self::INFO)
    {
        $level = strtoupper($level);
        switch ($level) {
            case self::INFO:
            case self::ERR:
            case self::RUN:
                self::info($message, $level);
                break;
        }
    }

    /**
     * Notes:sql日志
     * User: Abel Yang
     * Date: 2020/5/30/030
     * Time: 16:46
     * @param $message
     */
    public static function sql($message){
        if (C('sql_debug')) {
            $content = "[" . self::getNow() . "] {$message}\r\n";
            self::write($content, self::$sqlFile);
        }
    }

    public static function read()
    {
        return self::$log;
    }

    /**
     * Notes:普通日志
     * User: Abel Yang
     * Date: 2020/5/30/030
     * Time: 15:39
     * @param $message
     * @param $level
     */
    public static function info($message, $level = self::INFO)
    {
        self::write("[" . self::getNow() . "] " . self::getUrl() . "\r\n[{$level}]: {$message}\r\n");
    }

    /**
     * Notes:错误日志
     * User: Abel Yang
     * Date: 2020/5/30/030
     * Time: 15:39
     * @param string $message
     */
    public static function error($message = "")
    {
        $stack = $message;
        $debugInfo = debug_backtrace();
        foreach ($debugInfo as $key => $val) {
            if (array_key_exists("file", $val)) $stack .= ",file:" . $val["file"];
            if (array_key_exists("line", $val)) $stack .= ",line:" . $val["line"];
            if (array_key_exists("function", $val)) $stack .= ",function:" . $val["function"];
        }
        self::info($stack, self::ERR);
    }

    private static function write($content, $filePrefix = "")
    {
        if (empty($content)) return;

        $logDir = BASE_DATA_PATH . '/log/';
        is_dir($logDir) ?: mkdir($logDir, 0777, true);

        $fileName = sprintf(self::$logFile, $filePrefix, date('Ymd'));
        $logFile = $logDir . $fileName;
        file_put_contents($logFile, "{$content}", FILE_APPEND);
    }

    private static function getNow()
    {
        list($usec, $sec) = explode(" ", microtime());
        return date('Y-m-d H:i:s', $sec) . " " . $usec;
    }

    private static function getUrl()
    {
        $url = $_SERVER['REQUEST_URI'] ? $_SERVER['REQUEST_URI'] : $_SERVER['PHP_SELF'];
        $url .= " ( app={$_GET['app']}&mod={$_GET['mod']} ) ";
        return $url;
    }
}

用法:

$error = “报错信息”. PHP_EOL;
Log::record($error, Log::ERR);

上一篇:Redis数据结构之键命令


下一篇:sql update语句与exists使用时的问题