做一下基本關於Monolog的基本介紹:
Monolog是基於PHP的日志類庫。
介紹就到這,言歸正傳
安裝
安裝最新版本:(composer 還沒安裝的~:https://www.phpcomposer.com/)
composer require monolog/monolog
要求PHP版本為5.3以上。
以上都是百度都可以進行搜索的廢話,這里咱們只是進行復制並且再廢話一遍~
接下來的是重點:
<?php /** * Created by PhpStorm. * User: j * Date: 2019-01-09 * Time: 15:33 */ namespace common\log; use Monolog\Formatter\LineFormatter; use Monolog\Logger; use Monolog\Handler\RotatingFileHandler; class Log { private static $loggers; /** * 日志默認保存路徑 * @var string */ private static $fileName = '/data/logs/monolog/'; /** * 日志留存時間 * @var int */ private static $maxFiles = 31; /** * 日志等級 * @var int */ private static $level = Logger::DEBUG; /** * 文件讀寫權限分配 * 0666 保證log日志文件可以被其他用戶/進程讀寫 * @var int */ private static $filePermission = 0666; /** * monolog日志 * @param $name * @param $arguments * @return mixed */ public static function __callStatic($name, $arguments) { $logger = self::createLogger($name); $message = empty($arguments[0]) ? '' : $arguments[0]; $context = empty($arguments[1]) ? [] : $arguments[1]; $levelName = empty($arguments[2]) ? $name : $arguments[2]; $backtraceOffset = empty($arguments[3]) ? 0 : intval($arguments[3]); $level = Logger::toMonologLevel($levelName); if (!is_int($level)) $level = Logger::INFO; // $backtrace數組第$idx元素是當前行,第$idx+1元素表示上一層,另外function、class需再往上取一個層次 // PHP7 不會包含'call_user_func'與'call_user_func_array',需減少一層 if (version_compare(PCRE_VERSION, '7.0.0', '>=')) { $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); $idx = 0 + $backtraceOffset; } else { $backtrace = debug_backtrace(); $idx = 1 + $backtraceOffset; } $trace = basename($backtrace[$idx]['file']) . ":" . $backtrace[$idx]['line']; if (!empty($backtrace