setFormatter(new ColoredLineFormatter()); $logger->pushHandler($handler); self::$instance = $logger; } /** * @use 前缀 * @return string */ private static function prefix(): string { if (getConf('multiple', 'print')) { // return '[' . (getConf('user_identity', 'print') ?? getConf('username', 'login.account')) . ']'; return sprintf("[%s]", getConf('user_identity', 'print') ?? getConf('username', 'login.account')); } return ''; } /** * @use 写日志 * @param $type * @param $message */ private static function writeLog($type, $message) { if (getConf('enable', 'log')) { if ($type == 'DEBUG' && !getConf('enable', 'debug')) { return; } $filename = APP_LOG_PATH . getConf('username', 'login.account') . ".log"; $date = date('[Y-m-d H:i:s] '); $data = $date . ' Log.' . $type . ' ' . $message . PHP_EOL; file_put_contents($filename, $data, FILE_APPEND); } } /** * @use 堆栈 * @return string */ private static function backtrace(): string { $backtraces = debug_backtrace(); return "(" . pathinfo(basename($backtraces[1]['file']))['filename'] . ") => "; } /** * @use 调试 * @param $message * @param array $context */ public static function debug($message, array $context = []) { self::writeLog('DEBUG', $message); self::getLogger()->addDebug($message, $context); } /** * @use 信息 * @param $message * @param array $context */ public static function info($message, array $context = []) { $message = self::prefix() . self::backtrace() . $message; self::writeLog('INFO', $message); self::getLogger()->addInfo($message, $context); self::callback(Logger::INFO, 'INFO', $message); } /** * @use 提醒 * @param $message * @param array $context */ public static function notice($message, array $context = []) { $message = self::prefix() . self::backtrace() . $message; self::writeLog('NOTICE', $message); self::getLogger()->addNotice($message, $context); self::callback(Logger::NOTICE, 'NOTICE', $message); } /** * @use 警告 * @param $message * @param array $context */ public static function warning($message, array $context = []) { $message = self::prefix() . self::backtrace() . $message; self::writeLog('WARNING', $message); self::getLogger()->addWarning($message, $context); self::callback(Logger::WARNING, 'WARNING', $message); } /** * @use 错误 * @param $message * @param array $context */ public static function error($message, array $context = []) { $message = self::prefix() . self::backtrace() . $message; self::writeLog('ERROR', $message); self::getLogger()->addError($message, $context); self::callback(Logger::ERROR, 'ERROR', $message); } /** * @use 回调 * @param $levelId * @param $level * @param $message */ public static function callback($levelId, $level, $message) { // $callback_level = Logger::ERROR ?? getConf('callback_level', 'log'); $callback_level = getConf('callback_level', 'log') ?? Logger::ERROR; if ($levelId >= $callback_level) { $url = str_replace('{account}', self::prefix(), getConf('callback', 'log')); $url = str_replace('{level}', $level, $url); $url = str_replace('{message}', urlencode($message), $url); Curl::request('get', str_replace(' ', '%20', $url)); } } }