做一下基本关于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